Skip to content

Commit

Permalink
feat: add mimir chart
Browse files Browse the repository at this point in the history
  • Loading branch information
PhilippeVienne committed Aug 28, 2024
1 parent a6b20be commit b762690
Show file tree
Hide file tree
Showing 255 changed files with 58,790 additions and 0 deletions.
2 changes: 2 additions & 0 deletions charts/mimir/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Ignore dependencies downloaded by helm
charts/
7 changes: 7 additions & 0 deletions charts/mimir/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
.envrc
.gitignore
CHANGELOG.md
ci/
INTERNAL*
README.md.gotmpl
scripts/
771 changes: 771 additions & 0 deletions charts/mimir/CHANGELOG.md

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions charts/mimir/Chart.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
dependencies:
- name: minio
repository: https://charts.min.io/
version: 5.0.14
- name: grafana-agent-operator
repository: https://grafana.github.io/helm-charts
version: 0.3.21
- name: rollout-operator
repository: https://grafana.github.io/helm-charts
version: 0.15.0
digest: sha256:428f2528666067f7726f5a794a920e3c445159ad95d3a38bdcdf313ffff984d2
generated: "2024-04-22T06:21:51.690943278Z"
24 changes: 24 additions & 0 deletions charts/mimir/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: v2
version: 5.5.0
appVersion: r305
description: "Grafana Mimir"
home: https://grafana.com/docs/helm-charts/mimir-distributed/latest/
icon: https://grafana.com/static/img/logos/logo-mimir.svg
kubeVersion: ^1.20.0-0
name: mimir
dependencies:
- name: minio
alias: minio
version: 5.0.14
repository: https://charts.min.io/
condition: minio.enabled
- name: grafana-agent-operator
alias: grafana-agent-operator
version: 0.3.21
repository: https://grafana.github.io/helm-charts
condition: metaMonitoring.grafanaAgent.installOperator
- name: rollout-operator
alias: rollout_operator
repository: https://grafana.github.io/helm-charts
version: 0.15.0
condition: rollout_operator.enabled
33 changes: 33 additions & 0 deletions charts/mimir/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Grafana Mimir Helm chart

Helm chart for deploying [Grafana Mimir](https://grafana.com/docs/mimir/latest/) or optionally [Grafana Enterprise Metrics](https://grafana.com/docs/enterprise-metrics/latest/) to Kubernetes.

For the full documentation, visit [Grafana mimir-distributed Helm chart documentation](https://grafana.com/docs/helm-charts/mimir-distributed/latest/).

> **Note:** The documentation version is derived from the Helm chart version which is 5.4.0-weekly.292.
When upgrading from Helm chart version 4.X, please see [Migrate the Helm chart from version 4.x to 5.0](https://grafana.com/docs/helm-charts/mimir-distributed/latest/migration-guides/migrate-helm-chart-4.x-to-5.0/).
When upgrading from Helm chart version 3.x, please see [Migrate from single zone to zone-aware replication with Helm](https://grafana.com/docs/helm-charts/mimir-distributed/latest/migration-guides/migrate-from-single-zone-with-helm/).
When upgrading from Helm chart version 2.1, please see [Upgrade the Grafana Mimir Helm chart from version 2.1 to 3.0](https://grafana.com/docs/helm-charts/mimir-distributed/latest/migration-guides/migrate-helm-chart-2.x-to-3.0/) as well.

**IMPORTANT**: Always consult the [CHANGELOG.md](./CHANGELOG.md) file and the deprecation list there to learn about breaking changes that require action during upgrade.

# mimir-distributed

![Version: 5.4.0-weekly.292](https://img.shields.io/badge/Version-5.4.0--weekly.292-informational?style=flat-square) ![AppVersion: r292](https://img.shields.io/badge/AppVersion-r292-informational?style=flat-square)

Grafana Mimir

## Requirements

Kubernetes: `^1.20.0-0`

| Repository | Name | Version |
|------------|------|---------|
| https://charts.min.io/ | minio(minio) | 5.0.14 |
| https://grafana.github.io/helm-charts | grafana-agent-operator(grafana-agent-operator) | 0.3.21 |
| https://grafana.github.io/helm-charts | rollout_operator(rollout-operator) | 0.15.0 |

# Contributing and releasing

Please see the dedicated "[Contributing to Grafana Mimir helm chart](https://github.com/grafana/mimir/tree/main/docs/internal/contributing/contributing-to-helm-chart.md)" page.
27 changes: 27 additions & 0 deletions charts/mimir/README.md.gotmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Grafana Mimir Helm chart

Helm chart for deploying [Grafana Mimir](https://grafana.com/docs/mimir/latest/) or optionally [Grafana Enterprise Metrics](https://grafana.com/docs/enterprise-metrics/latest/) to Kubernetes.

For the full documentation, visit [Grafana mimir-distributed Helm chart documentation]({{ template "chart.homepage" . }}).

> **Note:** The documentation version is derived from the Helm chart version which is {{ template "chart.version" . }}.

When upgrading from Helm chart version 4.X, please see [Migrate the Helm chart from version 4.x to 5.0]({{ template "chart.homepage" . }}migration-guides/migrate-helm-chart-4.x-to-5.0/).
When upgrading from Helm chart version 3.x, please see [Migrate from single zone to zone-aware replication with Helm]({{ template "chart.homepage" . }}migration-guides/migrate-from-single-zone-with-helm/).
When upgrading from Helm chart version 2.1, please see [Upgrade the Grafana Mimir Helm chart from version 2.1 to 3.0]({{ template "chart.homepage" . }}migration-guides/migrate-helm-chart-2.x-to-3.0/) as well.

**IMPORTANT**: Always consult the [CHANGELOG.md](./CHANGELOG.md) file and the deprecation list there to learn about breaking changes that require action during upgrade.

{{ template "chart.header" . }}

{{ template "chart.versionBadge" . }}{{ template "chart.typeBadge" . }}{{ template "chart.appVersionBadge" . }}

{{ template "chart.description" . }}

{{ template "chart.sourcesSection" . }}

{{ template "chart.requirementsSection" . }}

# Contributing and releasing

Please see the dedicated "[Contributing to Grafana Mimir helm chart](https://github.com/grafana/mimir/tree/main/docs/internal/contributing/contributing-to-helm-chart.md)" page.
175 changes: 175 additions & 0 deletions charts/mimir/RELEASE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
# Releases

The release processes that follow apply to the Grafana Mimir Helm chart.

## Schedule

The release schedule follows the Grafana Mimir and Grafana Enterprise Metrics (GEM) releases so that a new Helm chart release will include both. This usually happens within 2 weeks of the Mimir release. For the Mimir release schedule consult the Mimir [RELEASE.md](../../../../RELEASE.md).

Security updates of Mimir or GEM will also trigger a Helm chart release. The Helm chart can be released independently of Mimir and GEM, but this is only done if
there's some urgent update needed.

There are weekly releases with the latest Mimir and GEM build, but they are intended for testing purposes only, not production. Weekly releases are marked with a development version and helm will ignore them unless the `--devel` flag is used on the command line.

## Before you begin

One of the following scenarios must apply:

- Both Mimir and GEM have container images, whose image versions match. The image versions have the same weekly, RC, and final versions. These versions are released to Docker Hub.
- The Mimir and GEM image versions do not match, but there are no breaking changes between them because all of the shared configuration parameters behave the same way. For example, because GEM contains a bugfix, the version of GEM is `2.5.1` and the version of Mimir is `2.5.0`.

## Release process for a weekly release

Each weekly release is created automatically, but you need to approve and merge it manually. For an example, see [PR 4600](https://github.com/grafana/mimir/pull/4600).

[The Chart.yaml file](https://helm.sh/docs/topics/charts/#the-chartyaml-file) requires semantic versioning.

Weekly releases have the version `x.y.z-weekly.w`, for example `3.1.0-weekly.196`, where `196` represents an incrementing week number.

> **Note**: You must precede the week number (such as `196`) with a dot (`.`).
## Release process for a release candidate

1. Determine the Helm chart version number.

[The Chart.yaml file](https://helm.sh/docs/topics/charts/#the-chartyaml-file) requires semantic versioning:

- Release candidates have the version `x.y.z-rc.w`, for example `3.1.0-rc.7`.

> **Note**: You must precede the release candidate number (such as `7`) with a dot (`.`).
1. Prepare changelog.

- Create a PR, whose target is `main`, that updates the [Helm chart changelog](https://github.com/grafana/mimir/blob/main/operations/helm/charts/mimir-distributed/CHANGELOG.md), and move any `## main / unreleased` items under this release’s version.

> **Note:** If there are any deprecated features that should be removed in this release, then verify that they have been removed, and move their deprecation notices into the section for this release.
- Have the PR reviewed by a maintainer.

- Merge the PR upon approval.

1. Create a release branch.

- Create (if the branch is not created yet), switch to and push a branch starting from the commit created by the prepare changelog PR and name it `mimir-distributed-release-x.y`.

For example, `mimir-distributed-release-4.5` for any `4.5.x` release.

- Push the branch to origin without any commit added.

- Once the branch is pushed, all changes to `mimir-distributed-release-x.y` branch must be done through PR.

1. Create a branch from release branch if it hasn't been created yet, to update Mimir/GEM image and helm chart version .

For example `user/update-mimir-distributed-release-x.y`.

1. Update versions and links in the `user/update-mimir-distributed-release-x.y` branch.

- Set the image versions in [values.yaml](https://github.com/grafana/mimir/blob/main/operations/helm/charts/mimir-distributed/values.yaml), as needed:

- `image.tag` (Mimir)
- `enterprise.image.tag` (GEM)

> **Note:** Unlike the Mimir image tags, GEM image tags start with `v`. For example, `v2.6.0` instead of `2.6.0`.
- Set the `version` field, in the [Chart.yaml](https://github.com/grafana/mimir/blob/main/operations/helm/charts/mimir-distributed/Chart.yaml) file, to the desired release candidate version.

For example, `4.5.0-rc.0`.

> **Note:** Once this change is merged to `mimir-distributed-x.y` branch, it will trigger the release process GitHub Action. Unless you want to release final release, make sure to append the correct rc version.
- Set the `appVersion` field, in the [Chart.yaml](https://github.com/grafana/mimir/blob/main/operations/helm/charts/mimir-distributed/Chart.yaml) file, to the version of Mimir that the Helm chart deploys.

For example, `2.6.0`.

- Create or update the release notes in `docs/sources/helm-charts/mimir-distributed/release-notes` directory.

The release notes should refer to the correct Mimir and GEM versions and their specific documentation version.

> **Note:** This step can be done in a separate PR and shouldn't block release candidate from getting published.
- Update the Mimir and GEM documentation version parameters in [\_index.md](https://github.com/grafana/mimir/blob/main/docs/sources/helm-charts/mimir-distributed/_index.md)

The two parameters are `MIMIR_DOCS_VERSION` and `gem_docs_version`. With the exception of the release notes, the Helm chart documentation should refer to the documentation or Mimir and GEM that is actually included in the Helm chart.

- From the root directory of the repository, run `make doc` to update [README.md](https://github.com/grafana/mimir/blob/main/operations/helm/charts/mimir-distributed/README.md) file.

- Verify that the links on the [README.md](https://github.com/grafana/mimir/blob/main/operations/helm/charts/mimir-distributed/README.md) are correct.

1. Open PR to release branch

- Create PR that contains all the changes we have so far from `user/update-mimir-distributed-release-x.y` branch and make sure that your PR targets the release branch `mimir-distributed-release-x.y`.

- Have the PR reviewed by a maintainer.

- Merge the PR upon approval.

1. Verify that the Helm chart is published

- Run the following commands:

`helm repo update && helm search repo grafana/mimir-distributed --devel --version <VERSION>`

You might have to wait a few minutes.

- In a browser, go to [https://grafana.com/docs/helm-charts/mimir-distributed](https://grafana.com/docs/helm-charts/mimir-distributed) and refresh the page.

1. After the release tag in Git is created, merge the branch back into `main` by following the same procedure as for Mimir releases: [Merging release branch into main](https://github.com/grafana/mimir/blob/main/RELEASE.md#merging-release-branch-into-main).

1. Backport and additional release candidate.

- If additional changes need to be added to this release, another release candidate version has to be created.
- Follow [backport process](https://github.com/grafana/mimir/blob/main/RELEASE.md#cherry-picking-changes-into-release-branch) similar with Mimir release to backport changes from main branch.
- Go back to step 5. Update versions and links in the user/update-mimir-distributed-release-x.y branch to update the next release candidate.

The [release process](https://github.com/grafana/mimir/blob/main/.github/workflows/helm-release.yaml) checks and creates a Git tag formatted as `mimir-distributed-<version>`, for example `mimir-distributed-4.5.0`, on the merge commit created when the PR is merged. To prevent releasing the same version with different content, the release process fails if the tag already exists. The release is published in the [Grafana helm-charts](https://grafana.github.io/helm-charts/) Helm repository.

## Release process for a final release

1. Determine the Helm chart version number.

[The Chart.yaml file](https://helm.sh/docs/topics/charts/#the-chartyaml-file) requires semantic versioning:

- The final version has the version `x.y.z`, for example `3.1.0`.
- Normally we will proceed the same `x.y.z` version value from the release candidate step.

1. Create a branch from release branch to update Mimir/GEM image and helm chart version.

For example `user/update-mimir-distributed-release-x.y-final`.

1. Optionally finalise release note and update version in the `user/update-mimir-distributed-release-x.y-final` branch.

- Update and finalize the release notes in `docs/sources/helm-charts/mimir-distributed/release-notes` directory if there has been some changes after release candidate.

- Set the `version` field, in the [Chart.yaml](https://github.com/grafana/mimir/blob/main/operations/helm/charts/mimir-distributed/Chart.yaml) file, to the desired final release version.

For example, `4.5.0`.

> **Note:** Once this change is merged to `mimir-distributed-x.y` branch, it will trigger the release process GitHub Action.
- There shouldn't be anymore update needed in documentation because that has been done in the release candidate step above.

- From the root directory of the repository, run `make doc` to update [README.md](https://github.com/grafana/mimir/blob/main/operations/helm/charts/mimir-distributed/README.md) file.

1. Open PR to release branch

- Create PR that contains all the changes we have so far from `user/update-mimir-distributed-release-x.y-final` branch and make sure that your PR targets the release branch `mimir-distributed-release-x.y`.

- Have the PR reviewed by a maintainer.

- Merge the PR upon approval.

1. Verify that the Helm chart is published

- Run the following commands:

`helm repo update && helm search repo grafana/mimir-distributed --version <VERSION>`

You might have to wait a few minutes.

- In a browser, go to [https://grafana.com/docs/helm-charts/mimir-distributed](https://grafana.com/docs/helm-charts/mimir-distributed) and refresh the page.

1. After the release tag in Git is created, merge the branch back into `main` by following the same procedure as for Mimir releases: [Merging release branch into main](https://github.com/grafana/mimir/blob/main/RELEASE.md#merging-release-branch-into-main).

The [release process](https://github.com/grafana/mimir/blob/main/.github/workflows/helm-release.yaml) checks and creates a Git tag formatted as `mimir-distributed-<version>`, for example `mimir-distributed-4.5.0`, on the merge commit created when the PR is merged. To prevent releasing the same version with different content, the release process fails if the tag already exists. The release is published in the [Grafana helm-charts](https://grafana.github.io/helm-charts/) Helm repository.

When a `mimir-distributed-x.y.z` final version tag is pushed, the Helm chart documentation is [published](https://github.com/grafana/mimir/blob/main/.github/workflows/publish-technical-documentation-release-helm-charts.yml) to [https://grafana.com/docs/helm-charts/mimir-distributed](https://grafana.com/docs/helm-charts/mimir-distributed).
Loading

0 comments on commit b762690

Please sign in to comment.