Upgrading ORCA
After the initial ORCA deployment, any future updates to the ORCA deployment
from configuration files, Terraform files (*.tf
), or modules from a new
version of ORCA can be deployed and will update the appropriate portions of
the stack as needed.
Check for compatibility with the Cumulus version.
ORCA Versioning
ORCA uses a global versioning approach, meaning version numbers are consistent across all Terraform modules and semantic versioning to track major, minor, and patch version (e.g., 1.0.0).
ORCA major version releases (e.g., 2.x.x -> 3.x.x) introduce known breaking changes. However, any version change has the possibility to introduce breaking changes for your particular use case. It is critical that the release notes are viewed for migration steps and changes.
Carefully read each 'Migration Notes'
section within the CHANGELOG.md
file, following all steps, starting with the oldest release after your
currently installed release, and progressing through them chronologically.
To view the released module artifacts for each ORCA core version, see the ORCA Releases page.
Migrating to a New Version
When breaking changes have been introduced, the ORCA Team will publish instructions on migrating from one version to another. Detailed release notes with migration instructions (if any) for each release can be found on the ORCA Releases page.
-
Use consistent ORCA versions: All Terraform modules must be updated to the same ORCA version number (see Updating ORCA Version below). Check the CHANGELOG for deprecation/breaking change notices.
-
Follow all intervening steps: When skipping over versions, you must perform all intervening migration steps. For example, if going from version 1.1.0 to 1.3.0, upgrade from 1.1.0 to 1.2.0 and then to 1.3.0. This is critical because each release that contains migration steps provide instructions only for migrating from the immediately previous release, but you must follow all migration steps between your currently installed release and every release through the release that you wish to migrate to.
-
Migrate lower environments first: Migrate your "lowest" environment first and test it to ensure correctness before performing migration steps in each successively higher environment. For example, update Sandbox, then UAT, then SIT, and finally Prod.
-
Conduct smoke tests: In each environment, perform smoke tests that give you confidence that the upgrade was successful, prior to moving on to the next environment. Since deployments can vary widely, it is up to you to determine tests that might be specific to your deployment.
-
Migrate during appropriate times: Choose a time to migrate when support is more likely to be available in case you encounter problems, such as when you are most likely to be able to obtain support relatively promptly. Prefer earlier in the week over later in the week (particularly avoiding Fridays, if possible).
Updating ORCA Version
To update your ORCA version:
-
Find the desired release on the ORCA Releases page.
-
Update the
source
in your Terraform deployment files for ORCA by replacingvx.x.x
with the desired version of ORCA. If upgrading fromv8.x.x
tov9.x.x
follow the below steps:- Run the Lambda deletion script found in
python3 bin/delete_lambda.py
this will delete all of the ORCA Lambdas with a provided prefix. Or delete them manually in the AWS console. - Navigate to the AWS console and search for the Cumulus RDS security group.
- Remove the inbound rule with the source of
PREFIX-vpc-ingress-all-egress
in Cumulus RDS security group. - Search for
PREFIX-vpc-ingress-all-egress
and delete the security group NOTE: Due to the Lambdas using ENIs, when deleting the securty groups it may say they are still associated with a Lambda that was deleted by the script. AWS may need a few minutes to refresh to fully disassociate the ENIs completely, if this error appears wait a few minutes and then try again.
- Run the Lambda deletion script found in
-
Run
terraform init
to get the latest copies of your updated modules.
Update ORCA Resources
Remember to initialize Terraform if necessary.
From the directory of your cumulus
deployment module (e.g., cumulus-tf
):
$ AWS_REGION=<region> \ # e.g. us-west-2
AWS_PROFILE=<profile> \
terraform apply
Once you have successfully updated all of your resources, verify that your deployment functions correctly. Please refer to some recommended smoke tests given above and consider additional tests appropriate for your particular deployment and environment.