mimir
mimir copied to clipboard
Separate Helm chart and Mimir releases
Background
We wanted to bundle the release dates of Helm and Mimir releases because changes in Mimir sometimes have a corresponding change in the Helm chart. Because of this we decided to release the Helm chart out of the same release branch as Mimir.
In addition, we sync docs for the two together and write a single page of release notes that covers both.
We version the chart and Mimir differently (e.g. Helm is already at version 3.0.0, while Mimir is at 2.2.0)
Problem
Helm is slowing down the release of Mimir. While the Helm release may be dependant on the Mimir release, the Helm release should not interfere with releasing Mimir.
A major source of friction is that documentation is shared across the two. Specifically the release notes (https://github.com/grafana/mimir/pull/2221) that would have been merged sooner, if they didn't have to include the Helm release notes.
Another source of friction that we saw during the Mimir 2.2 release is having the Mimir release branch cut before we had a lot of the code and documentation changes for the Helm chart completed. This meant that we had to cherry-pick many commits to the Mimir release branch, and this process needed some coordination with the release engineer.
Proposal
As a starting point to reducing the friction, we can separate Mimir and the Helm chart release branches and release notes.
Release notes
Have separate documentation for the Helm chart and Mimir releases that reference each other. They can be written in any order and links can be fixed when both are published.
Documentation releases
As of the Mimir 2.2 release, we release docs from the Mimir release branch. If we have a separate Helm chart release branch, it doesn't make a lot of sense to release the Helm chart documentation from the Mimir branch.
A working proposal is to have a separate release-docs-* branch that publishes both the docs for the Helm chart and for Mimir.
Thinking out loud: in practice we either make features that are Helm specific or Mimir features that we want to include in the Helm chart. So it's Mimir -> Helm flow. Even if there's a bug in Mimir that comes up in Helm install, we'd have a fix in Mimir then update the image in Helm.
In that sense I agree to release them from different points in time and in git. We'd still want to release the Helm chart as soon as possible , but not hold up the Mimir release.
If we think of the documentation as part of the code, that means whatever we cut into the Mimir release, we cannot alter in the Helm release (unless we re-release Mimir).
So two choices I see: A) Helm is separate, which means any documentation we do for Helm should be separate. So we should put any release notes/operations guides/etc into separate files , possibly under it's on subsection in the docs.
B) When we release Helm we have a patch release of Mimir. E.g.: Release Mimir 2.2.0 without Helm updates. Then make the Helm release and updates to the docs and release Mimir 2.2.1 + Helm.
Option B) could be very tricky as the information on Helm could be out of date . So as much as it pains me, I think it's A) that we should go for. Also that could potentially make it possible to have the Helm version selectable on the page?
It's very hard to get around the fact that Helm is pretty much its own product. Own way of installing, configuring
If we think of the documentation as part of the code, that means whatever we cut into the Mimir release, we cannot alter in the Helm release (unless we re-release Mimir).
we release docs on merges to the release branches. The pipeline was designed by @jdbaldry to trigger on releases and update the docs.
I also prefer option A). I think the separation that it gives will solve the problem this issue describes.
I am inclined to agree with option A, and would like to play this out in practice to identify any gotchas before fully agreeing.
So far we have do nothing and try it again and option A which is separating the helm documentation.
notes from meeting:
- Using a separate branch for helm releases means that mimir and helm branches have different versions of each other in their branches. They also have different versions of the docs. This is confusing.
- It’s easier if we release helm chart from main along with mimir. We should make sure that what is on the main branch is releasable along with mimir. One way to do this is to merge helm work into feature branches. Feature branches include docs. Feature branches are then merged to main.
Could we have a third option of reducing cherry-picking friction with tooling?
We might also be able to avoid the release notes merge challenges by using separate sections for Helm and Mimir?
See the (internal) design doc at https://docs.google.com/document/d/1nvdmOF-bXIvOooi2b_t-UtoKfTcZo_iu79OC6DQx9-8/edit.