Skip to main content
Version: 1.7.0

Upgrade to v1.4

This guide covers upgrading Orchestrator deployments from v1.3 to v1.4. Upgrades which skip versions (e.g. v1.2 to v1.4) are not explicitly documented or supported at this time.

The v1.4 upgrade follows a standard procedure:

  • Upgrade Terraform modules
  • Bump version numbers

Prerequisites

Build and publish the application containers and Helm charts on the head of the release branch by following the Build Orchestrator documentation.

If you are using local Terraform state (the default), ensure all Terraform state files are located in your working directory before proceeding. This means terraform show should list existing state, rather than outputting No state.

Now fetch the Kubernetes version that your cluster is running. If the AWS CLI is configured locally, run

aws eks describe-cluster --name orc8r

and note the version listed under cluster.

Otherwise, navigate to the AWS UI. Enter service EKS and select clusters on the left hand side of the screen. Note the Kubernetes version for the orc8r cluster. Use this version to set cluster_version below.

Upgrade Terraform modules

Set the source values for each of the Orchestrator modules in your root Terraform module to point to this release's modules and bump chart and container versions

# This will likely be found in main.tf

module orc8r {
source = "github.com/magma/magma//orc8r/cloud/deploy/terraform/orc8r-aws?ref=v1.4"
# ...
cluster_version = "1.17" # set to Kubernetes version found above. 1.17 is used as an example here
}

module orc8r-app {
source = "github.com/magma/magma//orc8r/cloud/deploy/terraform/orc8r-helm-aws?ref=v1.4"
# ...
orc8r_chart_version = "1.5.16"
orc8r_tag = "MAGMA_TAG" # from build step, e.g. v1.4.0
orc8r_deployment_type = "fwa" # valid options: ["fwa", "federated_fwa", "all"]
}

Set cluster_version to the Kubernetes version found during the Prerequisites section. Bump your chart version to 1.5.16 and orc8r_tag to the semver tag you published your new Orchestrator container images as. You also need to set the orc8r_deployment_type variable to the deployment type that you intend to deploy. This type sets which orc8r modules will run.

Then, prepare Terraform for the upgrade

terraform init --upgrade
terraform refresh

Terraform apply

Terraform the upgrade. We'll also need to manually rescale the Prometheus deployment, as a workaround for quirks in how its deployment handles upgrading (for context, see issue #4580).

Apply the upgrade

terraform apply     # Check this output VERY carefully!

Once the above command indicates it's applying the Helm upgrade, switch to a separate terminal tab and manually scale the Prometheus deployment. You can re-run the Terraform command if it times out.

kubectl --namespace orc8r scale deployment orc8r-prometheus --replicas=0 && kubectl --namespace orc8r scale deployment orc8r-prometheus --replicas=1

After the Terraform command completes, all application components should be successfully upgraded.