How can we perform upgrades to Kubernetes components without humans committing code

Problem

In order to perform an upgrade of a component of GitLab running in Kubernetes, a human must take a version that they desire to upgrade too, place it inside of a file in [k8s-workloads/gitlab], commit, and wait for CI. How can we rid of the human step?

Solutions

Option 1 - CI Variables

Utilize CI variables during the helm template process to inject the correct desired version inside of the helm upgrade procedure

Rejected in favor of option 3: #552 (comment 245344573)

Option 2 - Set a config map or secret Kubernetes Object

Set a configuration object inside of Kubernetes that is read when the deployment is upgraded such that we always pull the desired version

Rejected in favor of option 3: #552 (comment 245344573)

Option 3 - Something else does the committing of code

Something else watches and monitors for upgrades to the mailroom version to be utilized. This something else will then be the responsible subject for creating the commit to upgrade which triggers a deploy.

Demo recordings

/cc @gitlab-org/delivery

Edited by John Skarbek