Skip to content

Upgrade an App to a new version #9

@ishuar

Description

@ishuar

Upgrade application to the new release.

For in-house or upstream applications, when a new release addresses bug fixes, enhances security, or introduces new features essential to our use cases, it becomes crucial to perform application upgrades periodically.

In this scenario, let's consider the application as cert-manager and the new version as 1.14.0.

The following procedure outlines the steps to upgrade the respective application:

Create an EPIC with the below task list. [ could also convert the tasks in issues ( optional ) ]

  • Upgrade Cert Manager in Dev
  • Upgrade Cert Manager in Stage
  • Upgrade Cert Manager in Prod

Upgrade Cert Manager in Dev

INFO: refer to comment

  • Step 1. Open a PR by modifying the chartVersion key in the git-generator-overides.json file in the /argocd/envs/dev/cert-manager directory.

  • Step2. Merge the PR once reviewed. Once merged as auto-sync is disabled ArgoCD will display a diff between the current and the incoming changes on the console. If satisfied with the diff the application can be synced and the upgrade will be successful.

Generally this is the point where we would like to verify if nothing is broken and everything is running as expected.

Upgrade Cert Manager in Stage

  • Once satisfied with the testing or expectations from the dev environment upgrade safely to proceed and repeat steps 1 and 2 with another PR for /argocd/envs/stage/cert-manager, which could be on the same day or another day depending on the waiting period before promoting the changes to staging env.

Upgrade Cert Manager in Stage

  • Similar to staging, use the correct path for git-generator-overides.json file.

Special Notes

  • We might also utilise argo-cd-image-updater for such tasks.

  • Could be also a common maintenance window for infra apps or service apps to reduce no of PRs and waiting time. ( weekly/monthly maintenance windows )

  • Usually, the infra applications [velero, cert-manager] and service applications [end user client-facing apps] are managed by different teams, hence individual teams can manage this on their own time and need basis.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions