Upgrade your solution
Pull a more recent release, sync updated images, and redeploy using shdctl
읽는 시간 4분최근 업데이트: 5시간 전
The upgrade process uses shdctl to pull a more recent release and redeploy the solution.
To upgrade your solution, complete these steps:
1. Check the migration guide
Before you start, read the migration guide for every release after your current one, up to and including your target. Note the items that apply to your deployment: each one says at which of the following steps to complete it. For everything else that changed, refer to the release notes.
2. Update the manifest version
Update the key in your file to the desired version:
releaseVersionmanifest.yamlreleaseVersion: 2.0.0
If the new release needs other configuration changes, update your file too. For details about manifest fields and examples, refer to the Manifest reference. For a history of shdctl command changes, including new flags and breaking changes, refer to the shdctl changelog.
manifest.yaml3. Validate the cluster
A release can raise the minimum Kubernetes version or add a requirement that your cluster didn't need before. To check that the cluster still meets the deployment prerequisites:
shdctl cluster check
Resolve every failure before you continue.
The command reads from the cluster and doesn't change it. For the full list of checks, refer to shdctl cluster command.
4. Pull the new release
Run this command:
shdctl release pull --clean-output
5. Sync the updated artifacts
If you pull container images directly from the Unity source registry, skip this step. Otherwise, authenticate to both registries, then sync Docker images and ORAS artifacts to your private registry:
docker login uccmpprivatecloud.azurecr.iodocker login <your-registry-url>shdctl artifact sync preflightshdctl artifact sync images --skip-existing --cleanupshdctl artifact sync oras
The flag skips images that are already in your registry, and removes local images after each push.
--skip-existing--cleanupThen check that your registry holds every image the new release needs:
shdctl artifact sync verify
6. Regenerate and deploy the secrets
Regenerate the secrets on every upgrade: a release can add secrets that its services need. Start from a file that holds every value your cluster already uses. shdctl generates afresh any value the file lacks, and replaces the live secrets. Regenerating from an incomplete file therefore changes the database passwords, which breaks the services that use them, and the automation encryption key, without which data already encrypted at rest can't be read.
secret deployIf you persisted the generated values with shdctl at first install, use that file. A file that vpctl persisted needs rebuilding first: refer to Rebuild a secrets file that vpctl persisted. Otherwise, rebuild the file from the cluster. replaces an existing file only with , so if the file you installed with is still there, keep a copy of it first; skip the if you no longer have it:
shdctl secret export--forcecpcp secrets.import.yaml secrets.import.installed.yamlshdctl secret export --output secrets.import.yaml --force
The command lists any value it can't read back from the cluster: supply those by hand, from the copy where it holds them, unless they belong to a secret the new release introduces.
The generated secrets include the image pull secret. If something else in your cluster creates it, set in the manifest before you generate. Refer to The image pull secret.
imagePullSecret.generate: falseThen generate with , so that the file also records the new values, and deploy:
--persistshdctl secret generate --import secrets.import.yaml --use-defaults --persist secrets.import.yamlshdctl secret deploy
7. Regenerate and deploy the charts
Helm deployment
Generate the charts:
shdctl release generate --clean-output
Then deploy:
shdctl release deploy --dry-runshdctl release deploy
The deployment waits for the monitoring stack before it installs the rest of the release, and allows 10 minutes for each component. If a slow first image pull exceeds that, run the deployment again with a longer allowance, for example .
shdctl release deploy --timeout 20mArgoCD deployment
shdctl release generate --format argocd --clean-outputgit add generated-charts/git commit -m "Upgrade to release v2.0.0"git pushshdctl release deploy --format argocd
8. Verify the upgrade
Check that all pods are running:
kubectl get pods -n <namespace> --watch
Ensure that all pods eventually move to the Running state, except the pods of one-off jobs, such as , which finish as Completed. If a pod is in any other state, describe it and check its logs to find the issue.
novu-manager-jobThe upgrade process results in these changes:
- Updated container images are deployed.
- New or modified Helm charts are applied.
- Configuration changes from the new release take effect.