Showing preview only (488K chars total). Download the full file or copy to clipboard to get everything.
Repository: cortexproject/cortex-helm-chart
Branch: master
Commit: e06ea29fe785
Files: 163
Total size: 450.2 KB
Directory structure:
gitextract_m7b_vaw8/
├── .github/
│ ├── pull_request_template.md
│ ├── stale.yml
│ └── workflows/
│ ├── lint-test.yml
│ ├── release.yaml
│ └── renovate-config-validator.yml
├── .gitignore
├── .helmignore
├── .prettierignore
├── CHANGELOG.md
├── Chart.yaml
├── LICENSE
├── MAINTAINERS.md
├── Makefile
├── README.md
├── README.md.gotmpl
├── charts/
│ └── memcached-6.14.0.tgz
├── ci/
│ ├── test-configmap-values.yaml
│ ├── test-deployment-values.yaml
│ └── test-sts-values.yaml
├── ct.yaml
├── docs/
│ ├── .gitignore
│ ├── 404.html
│ ├── Gemfile
│ ├── _config.yml
│ ├── _layouts/
│ │ ├── home.html
│ │ └── page.html
│ ├── cortex-0.2.0.tgz
│ ├── cortex-0.3.0.tgz
│ ├── cortex-0.4.0.tgz
│ ├── cortex-0.4.1.tgz
│ ├── cortex-0.5.0.tgz
│ ├── cortex-0.6.0.tgz
│ ├── cortex-0.7.0.tgz
│ ├── cortex-1.0.0.tgz
│ ├── cortex-1.0.1.tgz
│ ├── cortex-1.1.0.tgz
│ ├── cortex-1.2.0.tgz
│ ├── cortex-1.3.0.tgz
│ ├── cortex-1.4.0.tgz
│ ├── cortex-1.5.0.tgz
│ ├── cortex-1.5.1.tgz
│ ├── cortex-1.6.0.tgz
│ ├── cortex-1.7.0.tgz
│ ├── cortex-2.0.0.tgz
│ ├── cortex-2.0.1.tgz
│ ├── cortex-2.1.0.tgz
│ ├── cortex-2.2.0.tgz
│ ├── cortex-2.3.0.tgz
│ ├── cortex-2.4.0.tgz
│ ├── cortex-2.5.0.tgz
│ ├── cortex-2.6.0.tgz
│ ├── cortex-3.0.0.tgz
│ ├── cortex-3.1.0.tgz
│ ├── cortex-3.2.0.tgz
│ ├── cortex-3.2.1.tgz
│ ├── cortex-3.3.0.tgz
│ ├── cortex-3.3.1.tgz
│ ├── development/
│ │ └── developing_the_docs.md
│ ├── development.md
│ ├── guides/
│ │ ├── configure_configmap.markdown
│ │ ├── configure_memberlist.markdown
│ │ ├── configure_memcached.markdown
│ │ ├── configure_ruler_and_alertmanager_with_configmap.markdown
│ │ ├── configure_rules_via_configmap.markdown
│ │ ├── configure_rules_via_sidecar.markdown
│ │ ├── getting_started_with_block_storage.markdown
│ │ └── upgrade-v1.markdown
│ ├── guides.md
│ ├── index.markdown
│ └── index.yaml
├── renovate.json
├── templates/
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── alertmanager/
│ │ ├── _helpers-alertmanager.tpl
│ │ ├── alertmanager-dep.yaml
│ │ ├── alertmanager-poddisruptionbudget.yaml
│ │ ├── alertmanager-servicemonitor.yaml
│ │ ├── alertmanager-statefulset.yaml
│ │ ├── alertmanager-svc-headless.yaml
│ │ └── alertmanager-svc.yaml
│ ├── clusterrole.yaml
│ ├── clusterrolebinding.yaml
│ ├── compactor/
│ │ ├── _helpers-compactor.tpl
│ │ ├── compactor-poddisruptionbudget.yaml
│ │ ├── compactor-servicemonitor.yaml
│ │ ├── compactor-statefulset.yaml
│ │ └── compactor-svc.yaml
│ ├── configmap.yaml
│ ├── distributor/
│ │ ├── _helpers-distributor.tpl
│ │ ├── distributor-dep.yaml
│ │ ├── distributor-hpa.yaml
│ │ ├── distributor-poddisruptionbudget.yaml
│ │ ├── distributor-servicemonitor.yaml
│ │ ├── distributor-svc-headless.yaml
│ │ └── distributor-svc.yaml
│ ├── ingester/
│ │ ├── _helpers-ingester.tpl
│ │ ├── ingester-dep.yaml
│ │ ├── ingester-hpa.yaml
│ │ ├── ingester-poddisruptionbudget.yaml
│ │ ├── ingester-servicemonitor.yaml
│ │ ├── ingester-statefulset.yaml
│ │ ├── ingester-svc-headless.yaml
│ │ └── ingester-svc.yaml
│ ├── nginx/
│ │ ├── _helpers-nginx.tpl
│ │ ├── nginx-config.yaml
│ │ ├── nginx-dep.yaml
│ │ ├── nginx-hpa.yaml
│ │ ├── nginx-ingress.yaml
│ │ ├── nginx-poddisruptionbudget.yaml
│ │ └── nginx-svc.yaml
│ ├── overrides-exporter/
│ │ ├── _helpers-overrides-exporter.tpl
│ │ ├── overrides-exporter-dep.yaml
│ │ ├── overrides-exporter-poddisruptionbudget.yaml
│ │ ├── overrides-exporter-servicemonitor.yaml
│ │ └── overrides-exporter-svc.yaml
│ ├── parquet-converter/
│ │ ├── _helpers-parquet-converter.tpl
│ │ ├── parquet-converter-dep.yaml
│ │ ├── parquet-converter-servicemonitor.yaml
│ │ └── parquet-converter-svc.yaml
│ ├── purger/
│ │ ├── _helpers-purger.tpl
│ │ ├── purger-dep.yaml
│ │ ├── purger-servicemonitor.yaml
│ │ ├── purger-svc-headless.yaml
│ │ └── purger-svc.yaml
│ ├── querier/
│ │ ├── _helpers-querier.tpl
│ │ ├── querier-dep.yaml
│ │ ├── querier-hpa.yaml
│ │ ├── querier-poddisruptionbudget.yaml
│ │ ├── querier-servicemonitor.yaml
│ │ └── querier-svc.yaml
│ ├── query-frontend/
│ │ ├── _helpers-query-frontend.tpl
│ │ ├── query-frontend-dep.yaml
│ │ ├── query-frontend-servicemonitor.yaml
│ │ ├── query-frontend-svc-headless.yaml
│ │ ├── query-frontend-svc.yaml
│ │ └── query-poddisruptionbudget.yaml
│ ├── query-scheduler/
│ │ ├── _helpers-query-scheduler.tpl
│ │ ├── query-scheduler-dep.yaml
│ │ ├── query-scheduler-poddisruptionbudget.yaml
│ │ ├── query-scheduler-servicemonitor.yaml
│ │ ├── query-scheduler-svc-headless.yaml
│ │ └── query-scheduler-svc.yaml
│ ├── ruler/
│ │ ├── _helpers-ruler.tpl
│ │ ├── ruler-configmap.yaml
│ │ ├── ruler-dep.yaml
│ │ ├── ruler-hpa.yaml
│ │ ├── ruler-poddisruptionbudget.yaml
│ │ ├── ruler-servicemonitor.yaml
│ │ └── ruler-svc.yaml
│ ├── runtime-configmap.yaml
│ ├── secret.yaml
│ ├── serviceaccount.yaml
│ ├── store-gateway/
│ │ ├── _helpers-store-gateway.tpl
│ │ ├── store-gateway-hpa.yaml
│ │ ├── store-gateway-poddisruptionbudget.yaml
│ │ ├── store-gateway-servicemonitor.yaml
│ │ ├── store-gateway-statefulset.yaml
│ │ ├── store-gateway-svc-headless.yaml
│ │ └── store-gateway-svc.yaml
│ └── svc-memberlist-headless.yaml
├── tools/
│ ├── bump-version.sh
│ └── chart-version-tag.sh
└── values.yaml
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/pull_request_template.md
================================================
<!-- Thanks for sending a pull request! Before submitting:
1. Read our CONTRIBUTING.md guide
2. Rebase your PR if it gets out of sync with master
3. Please do not edit/bump the Chart.yaml "version" field
-->
**What this PR does**:
**Which issue(s) this PR fixes**:
Fixes #<issue number>
**Checklist**
- [ ] `CHANGELOG.md` updated - the order of entries should be `[CHANGE]`, `[FEATURE]`, `[ENHANCEMENT]`, `[BUGFIX]`, `[DEPENDENCY]`
================================================
FILE: .github/stale.yml
================================================
# Days without any activity until an issue is labeled as stale
daysUntilStale: 60
# Days after having the stale label that the issue will be closed
daysUntilClose: 30
# Labels that prevent issues from being marked as stale
exemptLabels:
- dependencies
- keepalive
- bug
- help wanted
# Label to use to identify a stale issue
staleLabel: stale
# Comment to post when marking an issue as stale. Leave as false
# to disable.
markComment: >
This issue has been automatically marked as stale because it has not had any
activity in the past 60 days. It will be closed in 30 days if no further
activity occurs. Thank you for your contributions.
# Comment to post when closing a stale issue. Leave as
# false to disable.
closeComment: false
================================================
FILE: .github/workflows/lint-test.yml
================================================
name: Lint and Test Charts
on:
pull_request:
jobs:
update-readme:
# Only runs on PRs from the same repo (not forks), where the CI token can push.
if: github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
outputs:
updated: ${{ steps.commit.outputs.updated }}
steps:
- name: Checkout PR branch
uses: actions/checkout@v6
with:
token: ${{ secrets.CORTEX_HELM_CHART_CI_TOKEN }}
ref: ${{ github.event.pull_request.head.ref }}
fetch-depth: 0
- name: Regenerate README.md
run: make README.md
- name: Commit and push if changed
id: commit
run: |
if git diff --quiet -- README.md; then
echo "updated=false" >> "$GITHUB_OUTPUT"
else
git config user.name "$(git log -1 --format='%an')"
git config user.email "$(git log -1 --format='%ae')"
git add README.md
git commit -s -m "Auto-update README.md" \
-m "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>"
git push
echo "updated=true" >> "$GITHUB_OUTPUT"
fi
lint-test:
needs: update-readme
# Run unless update-readme pushed a new commit (which will re-trigger CI).
# Also runs when update-readme is skipped (fork PRs) or fails unexpectedly.
if: "!cancelled() && needs.update-readme.outputs.updated != 'true'"
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Helm
uses: azure/setup-helm@v5
with:
version: v3.12.1
# Python is required because `ct lint` runs Yamale (https://github.com/23andMe/Yamale) and
# yamllint (https://github.com/adrienverge/yamllint) which require Python
- uses: actions/setup-python@v6
with:
python-version: '3.14'
check-latest: true
- name: Set up chart-testing
uses: helm/chart-testing-action@v2.8.0
- name: Run chart-testing (lint)
run: ct lint --config ct.yaml
- name: Check README.md is up to date
run: |
make README.md
git diff --exit-code -- README.md
- name: Create kind cluster
uses: helm/kind-action@v1.14.0
- name: Run chart-testing (install)
run: |
kubectl create namespace cortex
ct install --config ct.yaml --namespace cortex
================================================
FILE: .github/workflows/release.yaml
================================================
name: Release Chart
on:
push:
branches:
- master
workflow_dispatch:
inputs:
version:
description: 'New version (e.g. 1.2.3). If omitted, bumps based on changelog.'
required: false
type: string
permissions:
contents: write
pull-requests: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
token: ${{ secrets.CORTEX_HELM_CHART_CI_TOKEN }}
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Install Helm
uses: azure/setup-helm@v5
with:
version: v3.12.1
- name: Bump Version
run: make bump-version VERSION="${{ inputs.version }}"
- name: Get New Version
id: version
run: |
new_version=$(grep '^version:' Chart.yaml | awk '{print $2}')
echo "new_version=$new_version" >> $GITHUB_OUTPUT
- name: Update README
run: make README.md
- name: Package Chart
run: |
helm repo add bitnami https://charts.bitnami.com/bitnami
helm dependency build
helm package . -d docs
helm repo index ./docs/ --url https://cortexproject.github.io/cortex-helm-chart
- name: Create or Update Pull Request
env:
GITHUB_TOKEN: ${{ secrets.CORTEX_HELM_CHART_CI_TOKEN }}
run: |
git checkout -b release-${{ steps.version.outputs.new_version }}
git add Chart.yaml README.md CHANGELOG.md docs/
git commit -s -m "Release ${{ steps.version.outputs.new_version }}"
git push --force origin release-${{ steps.version.outputs.new_version }}
# Check if a PR already exists for this head branch
existing_pr=$(gh pr list --head release-${{ steps.version.outputs.new_version }} --json number --jq '.[0].number')
if [ -n "$existing_pr" ]; then
echo "PR #$existing_pr already exists — updating title/body"
gh pr edit "$existing_pr" \
--title "Release ${{ steps.version.outputs.new_version }}" \
--body "Automated release PR for version ${{ steps.version.outputs.new_version }}"
else
gh pr create \
--title "Release ${{ steps.version.outputs.new_version }}" \
--body "Automated release PR for version ${{ steps.version.outputs.new_version }}" \
--base ${{ github.ref_name }} \
--head release-${{ steps.version.outputs.new_version }}
fi
================================================
FILE: .github/workflows/renovate-config-validator.yml
================================================
name: Validate renovate config
on:
push:
paths:
- renovate.json
jobs:
validate:
name: validate
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Validate
uses: rinchsan/renovate-config-validator@v0.2.1
================================================
FILE: .gitignore
================================================
./*.tgz
cortex
================================================
FILE: .helmignore
================================================
# Git
.git/
.gitignore
.github/
# IDE
.project
.idea/
*.tmproj
# Common backup files
*.swp
*.bak
*.tmp
*~
# Cortex ignore
docs/
tools/
ct.yaml
ci/
README.md.gotmpl
.prettierignore
CHANGELOG.md
MAINTAINERS.md
LICENSE
Makefile
renovate.json
================================================
FILE: .prettierignore
================================================
*.yaml
================================================
FILE: CHANGELOG.md
================================================
# Changelog
## master / unreleased
## 3.3.1 / 2026-05-21
* [DEPENDENCY] update kiwigrid/k8s-sidecar docker tag to v2.7.3 #628
* [DEPENDENCY] update nginx docker tag to v1.31 #629
* [DEPENDENCY] update memcached docker tag to v1.6.42 #631
## 3.3.0 / 2026-04-27
* [FEATURE] Add a parquet labels cache. #621
* [DEPENDENCY] update quay.io/cortexproject/cortex docker tag to v1.21.0 #622
* [DEPENDENCY] update kiwigrid/k8s-sidecar docker tag to v2.7.1 #623
## 3.2.1 / 2026-04-20
* [BUGFIX] Don't configure alertmanager in ruler if alertmanager is disabled #618
* [DEPENDENCY] update memcached docker tag to v1.6.41 #603
* [DEPENDENCY] update prom/memcached-exporter docker tag to v0.16.0 #612
* [DEPENDENCY] update kiwigrid/k8s-sidecar docker tag to v2.6.0 #610
## 3.2.0 / 2026-02-26
* [ENHANCEMENT] enable readiness probe on kiwigrid/k8s-sidecar #597
* [DEPENDENCY] update kiwigrid/k8s-sidecar docker tag to v2.5.0 #568
* [DEPENDENCY] update memcached docker tag to v1.6.40 #580
* [DEPENDENCY] update prom/memcached-exporter docker tag to v0.15.5 #581
* [BUGFIX] override kiwigrid/k8s-sidecar health port to avoid conflict #597
## 3.1.0 / 2026-02-24
* [FEATURE] Add a parquet converter. #579
* [ENHANCEMENT] Avoid scheduling queriers and ingesters on the same node #583
* [ENHANCEMENT] Allow for the nginx service port and container port to be different #589
* [DEPENDENCY] Update quay.io/cortexproject/cortex Docker tag to v1.20.1 #577
* [BUGFIX] Ruler is using the wrongly generated Alertmanager URL #593
## 3.0.0 / 2025-11-27
* [CHANGE] Replace bitnami images with community images. Config via .extraEnvVars must be migrated to .args. See memcached docs for standard args. #571
* [CHANGE] Memcacheds are now enabled by default #551
* [CHANGE] Change default config: distributors, rulers, queriers, query-frontend, nginx and compactors can be disrupted until 30%
* [CHANGE] Remove startup probes from compactors from default values. It's not recommended in general #542
* [CHANGE] Use default value for num_tokens in ingester configuration #544
* [BUGFIX] Fix discovering memcached instances #551
* [BUGFIX] Fix restarting query-schedulers when config changes #559
* [ENHANCEMENT] Run overrides-exporter with high availability #557
* [ENHANCEMENT] Persist subchart #572
* [ENHANCEMENT] Expose query frontend GRPC port on service for ruler #574
* [DEPENDENCY] Update dependency nginx to v1.29 #540
* [DEPENDENCY] Update kiwigrid/k8s-sidecar docker tag to v1.30.11 #547
* [DEPENDENCY] Update kiwigrid/k8s-sidecar docker tag to v1.30.5 #531
* [DEPENDENCY] Update quay.io/cortexproject/cortex Docker tag to v1.20.0 #566
## 2.6.0 / 2025-05-07
* [DEPENDENCY] Update Helm release memcached to v6.14.0 #528
* [DEPENDENCY] Update dependency nginx to v1.27 #532
* [DEPENDENCY] Update quay.io/cortexproject/cortex Docker tag to v1.19.0 #521
* [ENHANCEMENT] Add `nginx.config.override_push_endpoint` field to override push endpoint in the nginx configuration #522
## 2.5.0 / 2025-01-17
* [CHANGE] Updated default `align_queries_with_step` to **false** to match documentation #513
* [ENHANCEMENT] Add `nginx.config.upstream_protocol` field to configure the upstream protocol in the nginx configuration #506
* [ENHANCEMENT] Add ability to set `persistentVolumeClaimRetentionPolicy` on alertmanager, ingester, compactor, and store-gateway StatefulSets #517
* [BUGFIX] fix: upstream_protocol reference in auth_orgs #509
* [DEPENDENCY] Update quay.io/cortexproject/cortex Docker tag to v1.18.1 #510
## 2.4.0 / 2024-07-18
* [CHANGE] Removed the default `livenessProbe` for store-gateway and compactor. You can still use a `livenessProbe` but we advise against it #502
* [DEPENDENCY] Update quay.io/cortexproject/cortex Docker tag to v1.17.1 #501
## 2.3.0 / 2024-04-12
* [ENHANCEMENT] Alertmanager: Add `grpc` port #494
* [ENHANCEMENT] Alertmanager: Expose 9094 TCP and UDP for gossip cluster #494
* If the AlertManager headless service existed prior to applying the change, it will have only one port set, which is a known issue. See [kubernetes/kubernetes#39188](https://github.com/kubernetes/kubernetes/issues/39188). Re-creating the headless service can resolve this issue
## 2.2.0 / 2024-01-16
* [CHANGE] Removed `config.storage.engine` and any reference of it #488
* [ENHANCEMENT] Add `appProtocol` field to templates/svc-memberlist-headless.yaml to fix issues wirth Istio #485
* [ENHANCEMENT] Add option to autoscale on multiple metrics and custom metrics metrics #467
* [ENHANCEMENT] Add control on store-gateway statefulset when autoscale (HPA) enabled or disabled #472
* [DEPENDENCY] Update quay.io/cortexproject/cortex Docker tag to v1.15.0 #453
* [DEPENDENCY] Update quay.io/cortexproject/cortex Docker tag to v1.15.1 #456
* [DEPENDENCY] Update quay.io/cortexproject/cortex Docker tag to v1.15.2 #459
* [DEPENDENCY] Update quay.io/cortexproject/cortex Docker tag to v1.15.3 #471
* [DEPENDENCY] Update quay.io/cortexproject/cortex Docker tag to v1.16.0 #489
* [BUGFIX] Correctly interpret .Capabilities.KubeVersion when it looks like a prerelease #457
* [BUGFIX] Removed non-existent `purger.enable` flags in some components #488
* [BUGFIX] Fix podTargetLabels in all Prometheus ServiceMonitor CRDs #487
## 2.1.0 / 2023-03-17
* [FEATURE] add autoscaler for the ruler #430
* [ENHANCEMENT] Add annotations and labels to memberlist service #433
* [ENHANCEMENT] Add podTargetLabels to all Prometheus servicemonitor CRs #439
* [DEPENDENCY] Update Helm release memcached to v6.3.12 #441
# 2.0.1 / 2023-01-06
* [DEPENDENCY] Update quay.io/cortexproject/cortex Docker tag to v1.14.1 #422
* [DEPENDENCY] Update Helm release memcached to v6.3.3 #424
* [BUGFIX] Fix memcache dependency condition #425
# 2.0.0 / 2022-12-15
* [FEATURE] add purger components to cortex #407
* [CHANGE] With the release of memcached v6 bitnami renamed `extraEnv` to `extraEnvVars`. Use `extraEnvVars` if you want to alter MEMCACHED_CACHE_SIZE, MEMCACHED_MAX_CONNECTIONS, etc... #303
* [CHANGE] Caching for block storage can now be individually enabled. For example use `memcached-blocks.enabled` to enable caching for blocks. #417
* [CHANGE] Drop cortex chunk support. #417
* [CHANGE] Drop cortex configdb support. #417
* [CHANGE] Removed legacy ruler and alertmanager storage configuration. Please use `ruler_storage` and `alertmanager_storage`. #417
* [CHANGE] Dropped `storage.index_queries_cache_config`. #417
* [ENHANCEMENT] Add verboseLogging option to nginx config #402
* [ENHANCEMENT] Start using autoscaling/v2 for HorizontalPodAutoscaler in v1.23+ #414
* [ENHANCEMENT] Add pod topology spread constrant option to Ingester/Alertmanager statefulset #403
* [ENHANCEMENT] Add HPA to store gateways #406
* [DEPENDENCY] Update quay.io/cortexproject/cortex Docker tag to v1.13.1 #401
* [DEPENDENCY] Update Helm release memcached to v6 #303
* [DEPENDENCY] Update Helm release memcached to v6.3.2 #418
* [DEPENDENCY] Update Cortex to v1.14 #417
# 1.7.0 / 2022-09-23
* [BUGFIX] Fix nginx extraContainers to indent correctly #373
* [DEPENDENCY] Update dependency nginx to v1.23 #375
* [DEPENDENCY] Update dependency kiwigrid/k8s-sidecar to v1.19.2 #370
* [DEPENDENCY] Update quay.io/cortexproject/cortex Docker tag to v1.13.0 #381
* [DEPENDENCY] Update kiwigrid/k8s-sidecar Docker tag to v1.19.4 #387
* [DEPENDENCY] Update kiwigrid/k8s-sidecar Docker tag to v1.19.5 #392
## 1.6.0 / 2022-06-10
* [CHANGE] move from omegavvweapon/kopf-k8s-sidecar to kiwigrid/k8s-sidecar #365
* [FEATURE] Add Overrides-Exporter #360
* [ENHANCEMENT] Add dnsTTL option to nginx config #366
* [BUGFIX] Fix query-scheduler address for query-frontend to use correct address #364
* [DEPENDENCY] Update dependency nginx to v1.22 #357
## 1.5.1 / 2022-05-25
* [BUGFIX] Fix mounting cortex config when using configmap #355
* [DEPENDENCY] Update dependency omegavveapon/kopf-k8s-sidecar to v1.4.1 #353
## 1.5.0 / 2022-05-24
* [FEATURE] Add Query-Scheduler #268
* [ENHANCEMENT] Allow StoreGateway podManagementPolicy to be changed #332
* [ENHANCEMENT] Add pod topology spread constrant option #343
* [BUGFIX] Correct a typo in enabling distributor HPA #334
* [BUGFIX] Frontend memcached address did not match the Service #337
* [BUGFIX] Add service discovery method for query-scheduler addresses #338
## 1.4.0 / 2022-03-08
* [ENHANCEMENT] Upgrade to Cortex v1.11.1 #331
* [ENHANCEMENT] Includes enable flags for each component #319
* [ENHANCEMENT] Exclude cortex components endpoint from nginx config when disabled #326
## 1.3.0 / 2022-02-10
* [CHANGE] move from quay.io/kiwigrid/k8s-sidecar to omegavvweapon/kopf-k8s-sidecar image #302
* [CHANGE] undo querier store optimization #304
* config.querier.query_ingesters_within: 13h -> 0s (default)
* config.querier.query_store_after: 12h -> 0s (default)
* [CHANGE] Change sidecar default values to match values in documentation #317
* [CHANGE] Remove ruler.persistentVolume.subPath since it was never persistent to begin with #317
* [ENHANCEMENT] Fix the indentation of memcached guide #309
* [ENHANCEMENT] Added api endpoints for Grafana 8 unified alerting #291
* [ENHANCEMENT] Add guide on how to configure alertmanager/ruler with configmap #313
* [DEPENDENCY] Update Helm release memcached to v5.15.14 #301
## 1.2.0 / 2021-12-29
* [CHANGE] Use port number for prometheus port annotations. #288
* [CHANGE] Disable ingester startup probes by default. #286
* [CHANGE] Moved HPA memory specification to be the first item in the list. #284
* [FEATURE] Optionally manage cortex config as configmap. #280
* [ENHANCEMENT] Upgrade to Cortex v1.11.0 #272
* [DEPENDENCY] Update Helm release memcached to v5.15.12 #274
## 1.1.0 / 2021-12-01
* [FEATURE] Allow different service accounts per dep/statefulset. #264
* [CHANGE] Enable bucket index by default #275
* [CHANGE] Disable ingester liveness probes by default. #263
* [BUGFIX] workaround for .Capabilities.APIVersions. #277
* [DEPENDENCY] Update Helm release memcached to v5.15.9 #273
## 1.0.1 / 2021-11-26
* [BUGFIX] alertmanager/ruler deployment: fix indentation #266
## 1.0.0 / 2021-11-25
### This Release includes BREAKING CHANGES
* [FEATURE] Add autoscaler for nginx #249
* [FEATURE] Add in lifecycle for querier, querier-frontend, and distributor #243
* [FEATURE] Add ingressClass to ingressResource #227
* [ENHANCEMENT] Allow overriding cortex Version #227
* [ENHANCEMENT] Update policy k8 Version #227
* [ENHANCEMENT] Improved default values for bitnami/memcached #227
* [ENHANCEMENT] Update container names to match cortex-mixin expectations #233
* [CHANGE] Deprecate *.persistence #227
* [CHANGE] Remove legacy clusterPort from alertmanager #227
* [CHANGE] Remove useless nginx.serviceMonitor section #227
* [CHANGE] Configure blocks storage engine by default instead of chunks #227
* [CHANGE] Adjusted cortex default configuration #227
* server.grpc_server_max_recv_msg_size: 104857600 -> 10485760
* server.grpc_server_max_send_msg_size: 104857600 -> 10485760
* server.grpc_server_max_concurrent_streams: 1000 -> 10000
* server.ingester_client.grpc_client_config.max_recv_msg_size: 104857600 -> 10485760
* server.ingester_client.grpc_client_config.max_send_msg_size: 104857600 -> 10485760
* config.limits.enforce_metric_name: false -> true
* config.ruler.enable_api: false -> true
* configure memberlist automatically
* config.ingester.lifecycler.final_sleep: 0s -> 30s
* config.querier.query_ingesters_within: 12h -> 13h
* config.querier.query_store_after: 0 -> 12h
* [BUGFIX] Fix nil pointer evaluation when using `ruler.dictonaries` option #242
* [BUGFIX] Fixed hardcoding of containerSecurityContext in Ingester statefulset #258
* [BUGFIX] Don't create nginx resources unless nginx is enabled. #261
* [DEPENDENCY] Update Helm release memcached to v5.15.5 #241
* [DEPENDENCY] Update Helm release memcached to v5.15.8 #247
## 0.7.0 / 2021-10-05
* [FEATURE] Support runtime configuration #209
* [FEATURE] Add autoscaler for queriers #190
* [FEATURE] Add autoscaler for distributors #189
* [FEATURE] Add autoscaler for ingesters #182
* [ENHANCEMENT] Support customizing the nginx config with values #213
* [ENHANCEMENT] Upgrade to Cortex v1.10.0 #204
* [ENHANCEMENT] Populate config.querier.store_gateway_addresses automatically based on other config #201
* [ENHANCEMENT] Graceful shutdown of ingesters #195
* [ENHANCEMENT] Define namespace in templates #184
* [ENHANCEMENT] Use FQDN for memcached addresses #175
* [ENHANCEMENT] Optionally generate endpoints for `X-Scope-OrgID` injection (multi-tenancy) #180
* [ENHANCEMENT] Optionally configure Basic Auth within Nginx #205
* [ENHANCEMENT] Add extraEndpointSpec to all servicemonitors for specifying things like TLS #216
* [ENHANCEMENT] Add option to specify `podManagementPolicy` when using ingesters as statefulset #236
* [BUGFIX] Fix whitespace in runtime-config annotations, introduced in #209, fixed in #212
* [BUGFIX] Correcting nginx config for auth orgs to right proxy_pass #192
* [DEPENDENCY] Update Helm release memcached to v5.15.4 #228
## 0.6.0 / 2021-06-28
* [CHANGE] Removed dnssrvnoa resolution from block memcached (probably oversight) and moved back to simple dns resolution #164
* [CHANGE] Removed http-metrics port from every headless service and added ClusterIP service with http-metrics port to every component who before only had an headless service before #169
* [FEATURE] Support dynamic configuration of Ruler and AlertManager using sidecar #150
* [ENHANCEMENT] Enable/Disable security & container security context #158
* [ENHANCEMENT] ServiceMonitors: add options to configure metricRelabelings and relabelings #165
* [ENHANCEMENT] Support specification of whether service accounts should automount token by adding value for Cortex service account and upgrading memcached dependency to version which includes same change #142
* [BUGFIX] Fixed the default label used in pod affinity expression #162
* [BUGFIX] Fix label and annotation overrides for services (thanks @kwangil-ha) #164
* [BUGFIX] Fix store gateway service name regression introduced in (#144) #166
* [BUGFIX] Fix querier-frontend memcached arg #170
## 0.5.0 / 2021-06-08
* [CHANGE] **Labels has been updated to latest best practices**. This means that **you cannot do a rolling update from an older version of this chart**. Either change the labels of your existing deployment by hand to make the transition as seamless as possible or uninstall the old release and install the new release with a short downtime. #144
* [CHANGE] Minimum Kubernetes Version of this Chart is now 1.19 #144
* [CHANGE] A new dedicated service is now available for the memberlist. Check `config.memberlist.join_members` in the default `values.yaml` for more information. #144
* [CHANGE] Ingress is now disabled by default. You can re-enable it by setting `ingress.enabled` to `true` #144
* [CHANGE] Configs is now disabled by default. You can re-enable it by setting `configs.enabled` to `true` #144
* [CHANGE] PodDisruptionBudget is now enabled by default for all microservices once you have more than 1 replicas #144
* [ENHANCEMENT] startupProbe has been added to all Pods and the default values for `livenessProbe` and `readinessProbe` has been adjusted #144
* [ENHANCEMENT] You can now disable the alertmanager and ruler deployment by setting `ruler.enabled` or `alertmanager.enabled` to `false` #144
* [ENHANCEMENT] Rules for the ruler can now be provisioned via values. Check `ruler.directories` in the default `values.yaml` for more information. #144
* [ENHANCEMENT] Expose `client_max_body_size` config for nginx max request body size #137
* [ENHANCEMENT] Adding option to add custom headers (ex. X-Scope-OrgID) to NGINX from values.yaml (key `nginx.config.setHeaders`). #127
* [ENHANCEMENT] Headless service for distributor to allow GRPC load balancing #148
* [BUGFIX] Fixed `priorityClassName` in alertmanager deployment configuration. #155
* [BUGFIX] Replacing deprecated (in Cortex 1.9) configuration with appropriate replacements (max_look_back_period -> max_query_lookback & compress_responses -> response_compression_enabled). #154
* [BUGFIX] Added missing ServiceMonitors `additionalLabels` placeholders in `values.yaml`. #146
## 0.4.1 / 2021-03-22
* [BUGFIX] Fix dependencies in charts dir to reflect recent update in 0.4.0 #139
## 0.4.0 / 2021-03-01
* [CHANGE] Resource requests and limits have been removed from the values.yaml file. The default resources assigned will be based on the particular k8s cluster configuration, if they are not overridden. #112
* [CHANGE] Change memcached chart references from deprecated stable repo to bitnami source. #124
* [BUGFIX] Corrected structural issues found in ingress resource yaml for kube versions 1.19+. #112
## 0.3.0 / 2021-01-21
* [ENHANCEMENT] Expose new HTTP API paths for remote-write and Query frontend to nginx #103
* [ENHANCEMENT] Compactor service is no longer created if compactor is disabled. #82
* [ENHANCEMENT] Headless service for alert manager is only enabled when the alert manager is deployed as a stateful set. #91
* [ENHANCEMENT] Improved memcached configuration template, with support for both chunks & block storage caches. #92
* [ENHANCEMENT] Update apiVersion: networking.k8s.io/v1beta1 -> networking.k8s.io/v1 for Kubernetes versions 1.19+ #94
* [ENHANCEMENT] Service Monitors and Compactor Service #68, #80
* [ENHANCEMENT] Updated default replication factor to match documentation #102
* [BUGFIX] Update repository URL for memcache dependency charts. #96
* [BUGFIX] nginx config using non-default clusterDomain #78
* [BUGFIX] Add cluster DNS domain value #63
* [BUGFIX] Fix grpc port for querier #71
## 0.2.0 / 2020-10-25
* [FEATURE] Add support for Blocks storage backend of Cortex. #52
* [ENHANCEMENT] Adding dnsResolver option to nginx.config. #28
* [ENHANCEMENT] Supporting externally managed Cortex Config. #31
* [ENHANCEMENT] Enabling NGINX deployment to be optional. #32
* [ENHANCEMENT] Adding option to deploy ingester as StatefulSet. #46
* [ENHANCEMENT] Adding ability to run alertmanager as StatefulSet. #54
* [ENHANCEMENT] Updating README.MD with values.yaml defaults, adding alertmanager paths to nginx. #57
* [BUGFIX] Updating query frontend headless service to publish its address when not ready, to fix issue with queriers not becoming ready due to not finding any frontend addresses. #34
* [BUGFIX] Fixed invalid config template. #40
* [BUGFIX] Correct & add consistent target labels on components. #48
* [BUGFIX] Fix values file duplicate config.storage section of Cortex config. #51
* [BUGFIX] Add GRPC ports to store gateway pods and service. #52
* [BUGFIX] Fix service ports, fix ruler endpoint for configs and alertmanager. #55
================================================
FILE: Chart.yaml
================================================
apiVersion: v2
version: 3.3.1
appVersion: v1.21.0
description: 'Horizontally scalable, highly available, multi-tenant, long term Prometheus.'
home: https://cortexmetrics.io/
icon: https://avatars2.githubusercontent.com/u/43045022?s=200&v=4
kubeVersion: ^1.19.0-0
maintainers:
- email: thayward@infoblox.com
name: Tom Hayward
url: https://github.com/kd7lxl
- email: niclas.schad@stackit.cloud
name: Niclas Schad
url: https://github.com/nschad
name: cortex
sources:
- https://github.com/cortexproject/cortex-helm-chart
dependencies:
- name: memcached
alias: memcached-frontend
version: 6.14.0
repository: https://charts.bitnami.com/bitnami
condition: memcached-frontend.enabled
- name: memcached
alias: memcached-blocks-index
version: 6.14.0
repository: https://charts.bitnami.com/bitnami
condition: memcached-blocks-index.enabled
- name: memcached
alias: memcached-blocks
version: 6.14.0
repository: https://charts.bitnami.com/bitnami
condition: memcached-blocks.enabled
- name: memcached
alias: memcached-blocks-metadata
version: 6.14.0
repository: https://charts.bitnami.com/bitnami
condition: memcached-blocks-metadata.enabled
- name: memcached
alias: memcached-parquet-labels
version: 6.14.0
repository: https://charts.bitnami.com/bitnami
condition: memcached-parquet-labels.enabled
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: MAINTAINERS.md
================================================
- Niclas Schad, STACKIT <niclas.schad@stackit.cloud> ([@nschad](https://github.com/nschad))
- Tom Hayward, Infoblox <thayward@infoblox.com> ([@kd7lxl](https://github.com/kd7lxl))
================================================
FILE: Makefile
================================================
.PHONY: README.md
README.md:
docker run --rm --volume "$(shell pwd):/helm-docs" -u $(shell id -u) jnorwood/helm-docs:v1.11.0
.PHONY: bump-version
bump-version:
./tools/bump-version.sh $(VERSION)
================================================
FILE: README.md
================================================
<!-- README.md is a generated file. Make any changes in README.md.gotmpl or values.yaml. -->
# cortex
 
Horizontally scalable, highly available, multi-tenant, long term Prometheus.
**Homepage:** <https://cortexmetrics.io/>
## Maintainers
| Name | Email | Url |
| ---- | ------ | --- |
| Tom Hayward | <thayward@infoblox.com> | <https://github.com/kd7lxl> |
| Niclas Schad | <niclas.schad@stackit.cloud> | <https://github.com/nschad> |
## Documentation
Checkout our documentation for the cortex-helm-chart [here](https://cortexproject.github.io/cortex-helm-chart/)
## Dependencies
### Key-Value store
Cortex requires a Key-Value (KV) store to store the ring. It can use traditional KV stores like [Consul](https://www.consul.io/) or [etcd](https://etcd.io/), but it can also build its own KV store on top of memberlist library using a gossip algorithm.
The recommended approach is to use the built-in memberlist as a KV store, where supported.
External KV stores can be installed alongside Cortex using their respective helm charts https://github.com/bitnami/charts/tree/master/bitnami/etcd and https://github.com/hashicorp/consul-k8s/tree/main/charts/consul.
### Storage
Cortex requires a storage backend to store metrics and indexes.
See [cortex documentation](https://cortexmetrics.io/docs/) for details on storage types and documentation
## Installation
[Helm](https://helm.sh) must be installed to use the charts.
Please refer to Helm's [documentation](https://helm.sh/docs/) to get started.
Once Helm is set up properly, add the repo as follows:
```bash
helm repo add cortex-helm https://cortexproject.github.io/cortex-helm-chart
```
Cortex can now be installed with the following command:
```bash
helm install cortex --namespace cortex cortex-helm/cortex
```
If you have custom options or values you want to override:
```bash
helm install cortex --namespace cortex -f my-cortex-values.yaml cortex-helm/cortex
```
Specific versions of the chart can be installed using the `--version` option, with the default being the latest release.
What versions are available for installation can be listed with the following command:
```bash
helm search repo cortex-helm
```
As part of this chart many different pods and services are installed which all
have varying resource requirements. Please make sure that you have sufficient
resources (CPU/memory) available in your cluster before installing Cortex Helm
chart.
## Upgrades
To upgrade Cortex use the following command:
```bash
helm upgrade cortex -f my-cortex-values.yaml cortex-helm/cortex
```
Note that it might be necessary to use `--reset-values` since some default values in the values.yaml might have changed or were removed.
Source code can be found [here](https://cortexmetrics.io/)
## Requirements
Kubernetes: `^1.19.0-0`
| Repository | Name | Version |
|------------|------|---------|
| https://charts.bitnami.com/bitnami | memcached-frontend(memcached) | 6.14.0 |
| https://charts.bitnami.com/bitnami | memcached-blocks-index(memcached) | 6.14.0 |
| https://charts.bitnami.com/bitnami | memcached-blocks(memcached) | 6.14.0 |
| https://charts.bitnami.com/bitnami | memcached-blocks-metadata(memcached) | 6.14.0 |
| https://charts.bitnami.com/bitnami | memcached-parquet-labels(memcached) | 6.14.0 |
## Values
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| alertmanager.​affinity | object | `{}` | |
| alertmanager.​annotations | object | `{}` | |
| alertmanager.​containerSecurityContext.​enabled | bool | `true` | |
| alertmanager.​containerSecurityContext.​readOnlyRootFilesystem | bool | `true` | |
| alertmanager.​enabled | bool | `true` | |
| alertmanager.​env | list | `[]` | Extra env variables to pass to the cortex container |
| alertmanager.​extraArgs | object | `{}` | Additional Cortex container arguments, e.g. log level (debug, info, warn, error) |
| alertmanager.​extraContainers | list | `[]` | Additional containers to be added to the cortex pod. |
| alertmanager.​extraPorts | list | `[]` | Additional ports to the cortex services. Useful to expose extra container ports. |
| alertmanager.​extraVolumeMounts | list | `[]` | Extra volume mounts that will be added to the cortex container |
| alertmanager.​extraVolumes | list | `[]` | Additional volumes to the cortex pod. |
| alertmanager.​initContainers | list | `[]` | Init containers to be added to the cortex pod. |
| alertmanager.​livenessProbe.​httpGet.​path | string | `"/ready"` | |
| alertmanager.​livenessProbe.​httpGet.​port | string | `"http-metrics"` | |
| alertmanager.​nodeSelector | object | `{}` | |
| alertmanager.​persistentVolume.​accessModes | list | `["ReadWriteOnce"]` | Alertmanager data Persistent Volume access modes Must match those of existing PV or dynamic provisioner Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ |
| alertmanager.​persistentVolume.​annotations | object | `{}` | Alertmanager data Persistent Volume Claim annotations |
| alertmanager.​persistentVolume.​enabled | bool | `true` | If true and alertmanager.statefulSet.enabled is true, Alertmanager will create/use a Persistent Volume Claim If false, use emptyDir |
| alertmanager.​persistentVolume.​retentionPolicy | object | `{}` | StatefulSetAutoDeletePVC feature https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#persistentvolumeclaim-retention |
| alertmanager.​persistentVolume.​size | string | `"2Gi"` | Alertmanager data Persistent Volume size |
| alertmanager.​persistentVolume.​storageClass | string | `nil` | Alertmanager data Persistent Volume Storage Class If defined, storageClassName: <storageClass> If set to "-", storageClassName: "", which disables dynamic provisioning If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. |
| alertmanager.​persistentVolume.​subPath | string | `""` | Subdirectory of Alertmanager data Persistent Volume to mount Useful if the volume's root directory is not empty |
| alertmanager.​podAnnotations | object | `{"prometheus.io/port":"8080","prometheus.io/scrape":"true"}` | Pod Annotations |
| alertmanager.​podDisruptionBudget | object | `{"maxUnavailable":1}` | If not set then a PodDisruptionBudget will not be created |
| alertmanager.​podLabels | object | `{}` | Pod Labels |
| alertmanager.​readinessProbe.​httpGet.​path | string | `"/ready"` | |
| alertmanager.​readinessProbe.​httpGet.​port | string | `"http-metrics"` | |
| alertmanager.​replicas | int | `1` | |
| alertmanager.​resources | object | `{}` | |
| alertmanager.​securityContext | object | `{}` | |
| alertmanager.​service.​annotations | object | `{}` | |
| alertmanager.​service.​labels | object | `{}` | |
| alertmanager.​serviceAccount.​name | string | `""` | "" disables the individual serviceAccount and uses the global serviceAccount for that component |
| alertmanager.​serviceMonitor.​additionalLabels | object | `{}` | |
| alertmanager.​serviceMonitor.​enabled | bool | `false` | |
| alertmanager.​serviceMonitor.​extraEndpointSpec | object | `{}` | Additional endpoint configuration https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint |
| alertmanager.​serviceMonitor.​metricRelabelings | list | `[]` | |
| alertmanager.​serviceMonitor.​podTargetLabels | list | `[]` | |
| alertmanager.​serviceMonitor.​relabelings | list | `[]` | |
| alertmanager.​sidecar.​containerSecurityContext.​enabled | bool | `true` | |
| alertmanager.​sidecar.​containerSecurityContext.​readOnlyRootFilesystem | bool | `true` | |
| alertmanager.​sidecar.​defaultFolderName | string | `""` | The default folder name, it will create a subfolder under the `folder` and put rules in there instead |
| alertmanager.​sidecar.​enableUniqueFilenames | bool | `false` | A value of true will produce unique filenames to avoid issues when duplicate data keys exist between ConfigMaps and/or Secrets within the same or multiple Namespaces. |
| alertmanager.​sidecar.​enabled | bool | `false` | Enable sidecar that collect the configmaps with specified label and stores the included files them into the respective folders |
| alertmanager.​sidecar.​folder | string | `"/data"` | Folder where the files should be placed. |
| alertmanager.​sidecar.​folderAnnotation | string | `"k8s-sidecar-target-directory"` | The annotation the sidecar will look for in ConfigMaps and/or Secrets to override the destination folder for files. If the value is a relative path, it will be relative to FOLDER |
| alertmanager.​sidecar.​healthPort | int | `8081` | The port the kiwigrid/k8s-sidecar listens on for health checks. The image default matches the cortex default listen port (8080), so it must be overridden here. |
| alertmanager.​sidecar.​image.​repository | string | `"kiwigrid/k8s-sidecar"` | |
| alertmanager.​sidecar.​image.​sha | string | `""` | |
| alertmanager.​sidecar.​image.​tag | string | `"2.7.3"` | |
| alertmanager.​sidecar.​imagePullPolicy | string | `"IfNotPresent"` | |
| alertmanager.​sidecar.​label | string | `"cortex_alertmanager"` | Label that should be used for filtering |
| alertmanager.​sidecar.​labelValue | string | `""` | The value for the label you want to filter your resources on. Don't set a value to filter by any value |
| alertmanager.​sidecar.​readinessProbe.​httpGet.​path | string | `"/healthz"` | |
| alertmanager.​sidecar.​readinessProbe.​httpGet.​port | string | `"sidecar-health"` | |
| alertmanager.​sidecar.​readinessProbe.​periodSeconds | int | `5` | |
| alertmanager.​sidecar.​resource | string | `"both"` | The resource type that the operator will filter for. Can be configmap, secret or both |
| alertmanager.​sidecar.​resources | object | `{}` | |
| alertmanager.​sidecar.​searchNamespace | string | `""` | The Namespace(s) from which resources will be watched. For multiple namespaces, use a comma-separated string like "default,test". If not set or set to ALL, it will watch all Namespaces. |
| alertmanager.​sidecar.​skipTlsVerify | bool | `false` | Set to true to skip tls verification for kube api calls |
| alertmanager.​sidecar.​startupProbe.​httpGet.​path | string | `"/healthz"` | |
| alertmanager.​sidecar.​startupProbe.​httpGet.​port | string | `"sidecar-health"` | |
| alertmanager.​sidecar.​startupProbe.​periodSeconds | int | `5` | |
| alertmanager.​sidecar.​watchMethod | string | `""` | Determines how kopf-k8s-sidecar will run. If WATCH it will run like a normal operator forever. If LIST it will gather the matching configmaps and secrets currently present, write those files to the destination directory and die |
| alertmanager.​startupProbe.​failureThreshold | int | `10` | |
| alertmanager.​startupProbe.​httpGet.​path | string | `"/ready"` | |
| alertmanager.​startupProbe.​httpGet.​port | string | `"http-metrics"` | |
| alertmanager.​statefulSet.​enabled | bool | `false` | If true, use a statefulset instead of a deployment for pod management. This is useful for using a persistent volume for storing silences between restarts. |
| alertmanager.​statefulStrategy.​type | string | `"RollingUpdate"` | |
| alertmanager.​strategy.​rollingUpdate.​maxSurge | int | `0` | |
| alertmanager.​strategy.​rollingUpdate.​maxUnavailable | int | `1` | |
| alertmanager.​strategy.​type | string | `"RollingUpdate"` | |
| alertmanager.​terminationGracePeriodSeconds | int | `60` | |
| alertmanager.​tolerations | list | `[]` | Tolerations for pod assignment ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ |
| alertmanager.​topologySpreadConstraints | list | `[]` | |
| clusterDomain | string | `"cluster.local"` | Kubernetes cluster DNS domain |
| compactor.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​key | string | `"app.kubernetes.io/component"` | |
| compactor.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​operator | string | `"In"` | |
| compactor.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​values[0] | string | `"compactor"` | |
| compactor.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​topologyKey | string | `"kubernetes.io/hostname"` | |
| compactor.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​weight | int | `100` | |
| compactor.​annotations | object | `{}` | |
| compactor.​containerSecurityContext.​enabled | bool | `true` | |
| compactor.​containerSecurityContext.​readOnlyRootFilesystem | bool | `true` | |
| compactor.​enabled | bool | `true` | |
| compactor.​env | list | `[]` | |
| compactor.​extraArgs | object | `{}` | Additional Cortex container arguments, e.g. log.level (debug, info, warn, error) |
| compactor.​extraContainers | list | `[]` | |
| compactor.​extraPorts | list | `[]` | |
| compactor.​extraVolumeMounts | list | `[]` | |
| compactor.​extraVolumes | list | `[]` | |
| compactor.​initContainers | list | `[]` | |
| compactor.​livenessProbe | object | `{}` | |
| compactor.​nodeSelector | object | `{}` | |
| compactor.​persistentVolume.​accessModes | list | `["ReadWriteOnce"]` | compactor data Persistent Volume access modes Must match those of existing PV or dynamic provisioner Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ |
| compactor.​persistentVolume.​annotations | object | `{}` | compactor data Persistent Volume Claim annotations |
| compactor.​persistentVolume.​enabled | bool | `true` | If true compactor will create/use a Persistent Volume Claim If false, use emptyDir |
| compactor.​persistentVolume.​retentionPolicy | object | `{}` | StatefulSetAutoDeletePVC feature https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#persistentvolumeclaim-retention |
| compactor.​persistentVolume.​size | string | `"2Gi"` | |
| compactor.​persistentVolume.​storageClass | string | `nil` | compactor data Persistent Volume Storage Class If defined, storageClassName: <storageClass> If set to "-", storageClassName: "", which disables dynamic provisioning If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. |
| compactor.​persistentVolume.​subPath | string | `""` | Subdirectory of compactor data Persistent Volume to mount Useful if the volume's root directory is not empty |
| compactor.​podAnnotations | object | `{"prometheus.io/port":"8080","prometheus.io/scrape":"true"}` | Pod Annotations |
| compactor.​podDisruptionBudget.​maxUnavailable | string | `"30%"` | |
| compactor.​podLabels | object | `{}` | Pod Labels |
| compactor.​readinessProbe.​httpGet.​path | string | `"/ready"` | |
| compactor.​readinessProbe.​httpGet.​port | string | `"http-metrics"` | |
| compactor.​replicas | int | `1` | |
| compactor.​resources | object | `{}` | |
| compactor.​securityContext | object | `{}` | |
| compactor.​service.​annotations | object | `{}` | |
| compactor.​service.​labels | object | `{}` | |
| compactor.​serviceAccount.​name | string | `""` | "" disables the individual serviceAccount and uses the global serviceAccount for that component |
| compactor.​serviceMonitor.​additionalLabels | object | `{}` | |
| compactor.​serviceMonitor.​enabled | bool | `false` | |
| compactor.​serviceMonitor.​extraEndpointSpec | object | `{}` | Additional endpoint configuration https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint |
| compactor.​serviceMonitor.​metricRelabelings | list | `[]` | |
| compactor.​serviceMonitor.​podTargetLabels | list | `[]` | |
| compactor.​serviceMonitor.​relabelings | list | `[]` | |
| compactor.​startupProbe | object | `{}` | |
| compactor.​strategy.​type | string | `"RollingUpdate"` | |
| compactor.​terminationGracePeriodSeconds | int | `240` | |
| compactor.​tolerations | list | `[]` | |
| compactor.​topologySpreadConstraints | list | `[]` | |
| config.​alertmanager.​cluster | object | `{"listen_address":"0.0.0.0:9094"}` | Disable alertmanager gossip cluster by setting empty listen_address to empty string |
| config.​alertmanager.​enable_api | bool | `false` | Enable the experimental alertmanager config api. |
| config.​alertmanager.​external_url | string | `"/api/prom/alertmanager"` | |
| config.​api.​prometheus_http_prefix | string | `"/prometheus"` | |
| config.​api.​response_compression_enabled | bool | `true` | Use GZIP compression for API responses. Some endpoints serve large YAML or JSON blobs which can benefit from compression. |
| config.​auth_enabled | bool | `false` | |
| config.​blocks_storage.​bucket_store.​bucket_index.​enabled | bool | `true` | |
| config.​blocks_storage.​bucket_store.​sync_dir | string | `"/data/tsdb-sync"` | |
| config.​blocks_storage.​tsdb.​dir | string | `"/data/tsdb"` | |
| config.​distributor.​pool.​health_check_ingesters | bool | `true` | |
| config.​distributor.​shard_by_all_labels | bool | `true` | Distribute samples based on all labels, as opposed to solely by user and metric name. |
| config.​frontend.​log_queries_longer_than | string | `"10s"` | |
| config.​ingester.​lifecycler.​final_sleep | string | `"30s"` | Duration to sleep for before exiting, to ensure metrics are scraped. |
| config.​ingester.​lifecycler.​join_after | string | `"10s"` | We don't want to join immediately, but wait a bit to see other ingesters and their tokens first. It can take a while to have the full picture when using gossip |
| config.​ingester.​lifecycler.​observe_period | string | `"10s"` | To avoid generating same tokens by multiple ingesters, they can "observe" the ring for a while, after putting their own tokens into it. This is only useful when using gossip, since multiple ingesters joining at the same time can have conflicting tokens if they don't see each other yet. |
| config.​ingester.​lifecycler.​ring.​kvstore.​store | string | `"memberlist"` | |
| config.​ingester.​lifecycler.​ring.​replication_factor | int | `3` | Ingester replication factor per default is 3 |
| config.​ingester_client.​grpc_client_config.​max_recv_msg_size | int | `10485760` | |
| config.​ingester_client.​grpc_client_config.​max_send_msg_size | int | `10485760` | |
| config.​limits.​enforce_metric_name | bool | `true` | Enforce that every sample has a metric name |
| config.​limits.​max_query_lookback | string | `"0s"` | |
| config.​limits.​reject_old_samples | bool | `true` | |
| config.​limits.​reject_old_samples_max_age | string | `"168h"` | |
| config.​memberlist.​bind_port | int | `7946` | |
| config.​memberlist.​join_members | list | `["{{ include \"cortex.fullname\" $ }}-memberlist"]` | the service name of the memberlist if using memberlist discovery |
| config.​querier.​active_query_tracker_dir | string | `"/data/active-query-tracker"` | |
| config.​querier.​store_gateway_addresses | string | automatic | Comma separated list of store-gateway addresses in DNS Service Discovery format. This option should is set automatically when using the blocks storage and the store-gateway sharding is disabled (when enabled, the store-gateway instances form a ring and addresses are picked from the ring). |
| config.​query_range.​align_queries_with_step | bool | `false` | |
| config.​query_range.​cache_results | bool | `true` | |
| config.​query_range.​results_cache.​cache.​memcached.​expiration | string | `"1h"` | |
| config.​query_range.​results_cache.​cache.​memcached_client.​timeout | string | `"1s"` | |
| config.​query_range.​split_queries_by_interval | string | `"24h"` | |
| config.​ruler.​enable_alertmanager_discovery | bool | `false` | |
| config.​ruler.​enable_api | bool | `true` | Enable the experimental ruler config api. |
| config.​runtime_config.​file | string | `"/etc/cortex-runtime-config/runtime_config.yaml"` | |
| config.​server.​grpc_listen_port | int | `9095` | |
| config.​server.​grpc_server_max_concurrent_streams | int | `10000` | |
| config.​server.​grpc_server_max_recv_msg_size | int | `10485760` | |
| config.​server.​grpc_server_max_send_msg_size | int | `10485760` | |
| config.​server.​http_listen_port | int | `8080` | |
| config.​store_gateway | object | `{"sharding_enabled":false}` | https://cortexmetrics.io/docs/configuration/configuration-file/#store_gateway_config |
| distributor.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​key | string | `"app.kubernetes.io/component"` | |
| distributor.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​operator | string | `"In"` | |
| distributor.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​values[0] | string | `"distributor"` | |
| distributor.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​topologyKey | string | `"kubernetes.io/hostname"` | |
| distributor.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​weight | int | `100` | |
| distributor.​annotations | object | `{}` | |
| distributor.​autoscaling.​behavior | object | `{}` | Ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-configurable-scaling-behavior |
| distributor.​autoscaling.​enabled | bool | `false` | Creates a HorizontalPodAutoscaler for the distributor pods. |
| distributor.​autoscaling.​extraMetrics | list | `[]` | Optional custom and external metrics for the distributor pods to scale on In order to use this option , define a list of of specific following https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-multiple-metrics-and-custom-metrics and https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-metrics-not-related-to-kubernetes-objects |
| distributor.​autoscaling.​maxReplicas | int | `30` | |
| distributor.​autoscaling.​minReplicas | int | `2` | |
| distributor.​autoscaling.​targetCPUUtilizationPercentage | int | `80` | |
| distributor.​autoscaling.​targetMemoryUtilizationPercentage | int | `0` | |
| distributor.​containerSecurityContext.​enabled | bool | `true` | |
| distributor.​containerSecurityContext.​readOnlyRootFilesystem | bool | `true` | |
| distributor.​enabled | bool | `true` | |
| distributor.​env | list | `[]` | |
| distributor.​extraArgs | object | `{}` | Additional Cortex container arguments, e.g. log.level (debug, info, warn, error) |
| distributor.​extraContainers | list | `[]` | |
| distributor.​extraPorts | list | `[]` | |
| distributor.​extraVolumeMounts | list | `[]` | |
| distributor.​extraVolumes | list | `[]` | |
| distributor.​initContainers | list | `[]` | |
| distributor.​lifecycle | object | `{}` | |
| distributor.​livenessProbe.​httpGet.​path | string | `"/ready"` | |
| distributor.​livenessProbe.​httpGet.​port | string | `"http-metrics"` | |
| distributor.​nodeSelector | object | `{}` | |
| distributor.​persistentVolume.​subPath | string | `nil` | |
| distributor.​podAnnotations | object | `{"prometheus.io/port":"8080","prometheus.io/scrape":"true"}` | Pod Annotations |
| distributor.​podDisruptionBudget.​maxUnavailable | string | `"30%"` | |
| distributor.​podLabels | object | `{}` | Pod Labels |
| distributor.​readinessProbe.​httpGet.​path | string | `"/ready"` | |
| distributor.​readinessProbe.​httpGet.​port | string | `"http-metrics"` | |
| distributor.​replicas | int | `2` | |
| distributor.​resources | object | `{}` | |
| distributor.​securityContext | object | `{}` | |
| distributor.​service.​annotations | object | `{}` | |
| distributor.​service.​labels | object | `{}` | |
| distributor.​serviceAccount.​name | string | `""` | "" disables the individual serviceAccount and uses the global serviceAccount for that component |
| distributor.​serviceMonitor.​additionalLabels | object | `{}` | |
| distributor.​serviceMonitor.​enabled | bool | `false` | |
| distributor.​serviceMonitor.​extraEndpointSpec | object | `{}` | Additional endpoint configuration https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint |
| distributor.​serviceMonitor.​metricRelabelings | list | `[]` | |
| distributor.​serviceMonitor.​podTargetLabels | list | `[]` | |
| distributor.​serviceMonitor.​relabelings | list | `[]` | |
| distributor.​startupProbe.​failureThreshold | int | `10` | |
| distributor.​startupProbe.​httpGet.​path | string | `"/ready"` | |
| distributor.​startupProbe.​httpGet.​port | string | `"http-metrics"` | |
| distributor.​strategy.​rollingUpdate.​maxSurge | int | `0` | |
| distributor.​strategy.​rollingUpdate.​maxUnavailable | int | `1` | |
| distributor.​strategy.​type | string | `"RollingUpdate"` | |
| distributor.​terminationGracePeriodSeconds | int | `60` | |
| distributor.​tolerations | list | `[]` | |
| distributor.​topologySpreadConstraints | list | `[]` | |
| externalConfigSecretName | string | `"secret-with-config.yaml"` | |
| externalConfigVersion | string | `"0"` | |
| image.​pullPolicy | string | `"IfNotPresent"` | |
| image.​pullSecrets | list | `[]` | Optionally specify an array of imagePullSecrets. Secrets must be manually created in the namespace. ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ |
| image.​repository | string | `"quay.io/cortexproject/cortex"` | |
| image.​tag | string | `""` | Allows you to override the cortex version in this chart. Use at your own risk. |
| ingester.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​key | string | `"app.kubernetes.io/component"` | |
| ingester.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​operator | string | `"In"` | |
| ingester.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​values[0] | string | `"ingester"` | |
| ingester.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​values[1] | string | `"querier"` | |
| ingester.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​topologyKey | string | `"kubernetes.io/hostname"` | |
| ingester.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​weight | int | `100` | |
| ingester.​annotations | object | `{}` | |
| ingester.​autoscaling.​behavior.​scaleDown.​policies | list | `[{"periodSeconds":1800,"type":"Pods","value":1}]` | see https://cortexmetrics.io/docs/guides/ingesters-scaling-up-and-down/#scaling-down for scaledown details |
| ingester.​autoscaling.​behavior.​scaleDown.​stabilizationWindowSeconds | int | `3600` | uses metrics from the past 1h to make scaleDown decisions |
| ingester.​autoscaling.​behavior.​scaleUp.​policies | list | `[{"periodSeconds":1800,"type":"Pods","value":1}]` | This default scaleup policy allows adding 1 pod every 30 minutes. Ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-configurable-scaling-behavior |
| ingester.​autoscaling.​enabled | bool | `false` | |
| ingester.​autoscaling.​extraMetrics | list | `[]` | Optional custom and external metrics for the ingester pods to scale on In order to use this option , define a list of of specific following https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-multiple-metrics-and-custom-metrics and https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-metrics-not-related-to-kubernetes-objects |
| ingester.​autoscaling.​maxReplicas | int | `30` | |
| ingester.​autoscaling.​minReplicas | int | `3` | |
| ingester.​autoscaling.​targetMemoryUtilizationPercentage | int | `80` | |
| ingester.​containerSecurityContext.​enabled | bool | `true` | |
| ingester.​containerSecurityContext.​readOnlyRootFilesystem | bool | `true` | |
| ingester.​enabled | bool | `true` | |
| ingester.​env | list | `[]` | |
| ingester.​extraArgs | object | `{}` | Additional Cortex container arguments, e.g. log.level (debug, info, warn, error) |
| ingester.​extraContainers | list | `[]` | |
| ingester.​extraPorts | list | `[]` | |
| ingester.​extraVolumeMounts | list | `[]` | |
| ingester.​extraVolumes | list | `[]` | |
| ingester.​initContainers | list | `[]` | |
| ingester.​lifecycle.​preStop | object | `{"httpGet":{"path":"/ingester/shutdown","port":"http-metrics"}}` | The /shutdown preStop hook is recommended as part of the ingester scaledown process, but can be removed to optimize rolling restarts in instances that will never be scaled down. https://cortexmetrics.io/docs/guides/ingesters-scaling-up-and-down/#scaling-down |
| ingester.​livenessProbe | object | `{}` | Startup/liveness probes for ingesters are not recommended. Ref: https://cortexmetrics.io/docs/guides/running-cortex-on-kubernetes/#take-extra-care-with-ingesters |
| ingester.​nodeSelector | object | `{}` | |
| ingester.​persistentVolume.​accessModes | list | `["ReadWriteOnce"]` | Ingester data Persistent Volume access modes Must match those of existing PV or dynamic provisioner Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ |
| ingester.​persistentVolume.​annotations | object | `{}` | Ingester data Persistent Volume Claim annotations |
| ingester.​persistentVolume.​enabled | bool | `true` | If true and ingester.statefulSet.enabled is true, Ingester will create/use a Persistent Volume Claim If false, use emptyDir |
| ingester.​persistentVolume.​retentionPolicy | object | `{}` | StatefulSetAutoDeletePVC feature https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#persistentvolumeclaim-retention |
| ingester.​persistentVolume.​size | string | `"2Gi"` | Ingester data Persistent Volume size |
| ingester.​persistentVolume.​storageClass | string | `nil` | Ingester data Persistent Volume Storage Class If defined, storageClassName: <storageClass> If set to "-", storageClassName: "", which disables dynamic provisioning If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. |
| ingester.​persistentVolume.​subPath | string | `""` | Subdirectory of Ingester data Persistent Volume to mount Useful if the volume's root directory is not empty |
| ingester.​podAnnotations | object | `{"prometheus.io/port":"8080","prometheus.io/scrape":"true"}` | Pod Annotations |
| ingester.​podDisruptionBudget.​maxUnavailable | int | `1` | |
| ingester.​podLabels | object | `{}` | Pod Labels |
| ingester.​readinessProbe.​httpGet.​path | string | `"/ready"` | |
| ingester.​readinessProbe.​httpGet.​port | string | `"http-metrics"` | |
| ingester.​replicas | int | `3` | |
| ingester.​resources | object | `{}` | |
| ingester.​securityContext | object | `{}` | |
| ingester.​service.​annotations | object | `{}` | |
| ingester.​service.​labels | object | `{}` | |
| ingester.​serviceAccount.​name | string | `nil` | |
| ingester.​serviceMonitor.​additionalLabels | object | `{}` | |
| ingester.​serviceMonitor.​enabled | bool | `false` | |
| ingester.​serviceMonitor.​extraEndpointSpec | object | `{}` | Additional endpoint configuration https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint |
| ingester.​serviceMonitor.​metricRelabelings | list | `[]` | |
| ingester.​serviceMonitor.​podTargetLabels | list | `[]` | |
| ingester.​serviceMonitor.​relabelings | list | `[]` | |
| ingester.​startupProbe | object | `{}` | Startup/liveness probes for ingesters are not recommended. Ref: https://cortexmetrics.io/docs/guides/running-cortex-on-kubernetes/#take-extra-care-with-ingesters |
| ingester.​statefulSet.​enabled | bool | `false` | If true, use a statefulset instead of a deployment for pod management. This is useful when using WAL |
| ingester.​statefulSet.​podManagementPolicy | string | `"OrderedReady"` | ref: https://cortexmetrics.io/docs/guides/ingesters-scaling-up-and-down/#scaling-down and https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies for scaledown details |
| ingester.​statefulStrategy.​type | string | `"RollingUpdate"` | |
| ingester.​strategy.​rollingUpdate.​maxSurge | int | `0` | |
| ingester.​strategy.​rollingUpdate.​maxUnavailable | int | `1` | |
| ingester.​strategy.​type | string | `"RollingUpdate"` | |
| ingester.​terminationGracePeriodSeconds | int | `240` | |
| ingester.​tolerations | list | `[]` | |
| ingester.​topologySpreadConstraints | list | `[]` | |
| ingress.​annotations | object | `{}` | |
| ingress.​enabled | bool | `false` | |
| ingress.​hosts[0].​host | string | `"chart-example.local"` | |
| ingress.​hosts[0].​paths[0] | string | `"/"` | |
| ingress.​ingressClass.​enabled | bool | `false` | |
| ingress.​ingressClass.​name | string | `"nginx"` | |
| ingress.​tls | list | `[]` | |
| memberlist.​service.​annotations | object | `{}` | |
| memberlist.​service.​labels | object | `{}` | |
| memcached-blocks-index.​architecture | string | `"high-availability"` | |
| memcached-blocks-index.​args | list | `["-m 1024"]` | Command line argument supplied to memcached |
| memcached-blocks-index.​args[0] | string | `"-m 1024"` | The amount of memory allocated to memcached for object storage |
| memcached-blocks-index.​disableValidation | bool | `false` | Bypass validation of the memcached configuration in case a custom image is in use |
| memcached-blocks-index.​enabled | bool | `true` | Enables support for block index caching |
| memcached-blocks-index.​image.​repository | string | `"memcached"` | |
| memcached-blocks-index.​image.​tag | string | `"1.6.42"` | |
| memcached-blocks-index.​metrics.​enabled | bool | `true` | |
| memcached-blocks-index.​metrics.​image.​repository | string | `"prom/memcached-exporter"` | |
| memcached-blocks-index.​metrics.​image.​tag | string | `"v0.16.0"` | |
| memcached-blocks-index.​metrics.​serviceMonitor.​enabled | bool | `false` | |
| memcached-blocks-index.​replicaCount | int | `2` | |
| memcached-blocks-index.​resources | object | `{}` | |
| memcached-blocks-index.​service.​clusterIP | string | `"None"` | |
| memcached-blocks-metadata.​architecture | string | `"high-availability"` | |
| memcached-blocks-metadata.​args | list | `["-m 1024"]` | Command line argument supplied to memcached |
| memcached-blocks-metadata.​args[0] | string | `"-m 1024"` | The amount of memory allocated to memcached for object storage |
| memcached-blocks-metadata.​disableValidation | bool | `false` | Bypass validation of the memcached configuration in case a custom image is in use |
| memcached-blocks-metadata.​enabled | bool | `true` | Enables support for block metadata caching |
| memcached-blocks-metadata.​image.​repository | string | `"memcached"` | |
| memcached-blocks-metadata.​image.​tag | string | `"1.6.42"` | |
| memcached-blocks-metadata.​metrics.​enabled | bool | `true` | |
| memcached-blocks-metadata.​metrics.​image.​repository | string | `"prom/memcached-exporter"` | |
| memcached-blocks-metadata.​metrics.​image.​tag | string | `"v0.16.0"` | |
| memcached-blocks-metadata.​metrics.​serviceMonitor.​enabled | bool | `false` | |
| memcached-blocks-metadata.​replicaCount | int | `2` | |
| memcached-blocks-metadata.​resources | object | `{}` | |
| memcached-blocks-metadata.​service.​clusterIP | string | `"None"` | |
| memcached-blocks.​architecture | string | `"high-availability"` | |
| memcached-blocks.​args | list | `["-m 1024"]` | Command line argument supplied to memcached |
| memcached-blocks.​args[0] | string | `"-m 1024"` | The amount of memory allocated to memcached for object storage |
| memcached-blocks.​disableValidation | bool | `false` | Bypass validation of the memcached configuration in case a custom image is in use |
| memcached-blocks.​enabled | bool | `true` | Enables support for block caching |
| memcached-blocks.​image.​repository | string | `"memcached"` | |
| memcached-blocks.​image.​tag | string | `"1.6.42"` | |
| memcached-blocks.​metrics.​enabled | bool | `true` | |
| memcached-blocks.​metrics.​image.​repository | string | `"prom/memcached-exporter"` | |
| memcached-blocks.​metrics.​image.​tag | string | `"v0.16.0"` | |
| memcached-blocks.​metrics.​serviceMonitor.​enabled | bool | `false` | |
| memcached-blocks.​replicaCount | int | `2` | |
| memcached-blocks.​resources | object | `{}` | |
| memcached-blocks.​service.​clusterIP | string | `"None"` | |
| memcached-frontend.​architecture | string | `"high-availability"` | |
| memcached-frontend.​args | list | `["-m 1024"]` | Command line argument supplied to memcached |
| memcached-frontend.​args[0] | string | `"-m 1024"` | The amount of memory allocated to memcached for object storage |
| memcached-frontend.​disableValidation | bool | `false` | Bypass validation of the memcached configuration in case a custom image is in use |
| memcached-frontend.​enabled | bool | `true` | Enables support for caching queries in the frontend |
| memcached-frontend.​image.​repository | string | `"memcached"` | |
| memcached-frontend.​image.​tag | string | `"1.6.42"` | |
| memcached-frontend.​metrics.​enabled | bool | `true` | |
| memcached-frontend.​metrics.​image.​repository | string | `"prom/memcached-exporter"` | |
| memcached-frontend.​metrics.​image.​tag | string | `"v0.16.0"` | |
| memcached-frontend.​metrics.​serviceMonitor.​enabled | bool | `false` | |
| memcached-frontend.​replicaCount | int | `2` | |
| memcached-frontend.​resources | object | `{}` | |
| memcached-frontend.​service.​clusterIP | string | `"None"` | |
| memcached-parquet-labels.​architecture | string | `"high-availability"` | |
| memcached-parquet-labels.​args | list | `["-m 1024"]` | Command line argument supplied to memcached |
| memcached-parquet-labels.​args[0] | string | `"-m 1024"` | The amount of memory allocated to memcached for object storage |
| memcached-parquet-labels.​disableValidation | bool | `false` | Bypass validation of the memcached configuration in case a custom image is in use |
| memcached-parquet-labels.​enabled | bool | `false` | Enables support for parquet labels caching |
| memcached-parquet-labels.​image.​repository | string | `"memcached"` | |
| memcached-parquet-labels.​image.​tag | string | `"1.6.42"` | |
| memcached-parquet-labels.​metrics.​enabled | bool | `true` | |
| memcached-parquet-labels.​metrics.​image.​repository | string | `"prom/memcached-exporter"` | |
| memcached-parquet-labels.​metrics.​image.​tag | string | `"v0.16.0"` | |
| memcached-parquet-labels.​metrics.​serviceMonitor.​enabled | bool | `false` | |
| memcached-parquet-labels.​replicaCount | int | `2` | |
| memcached-parquet-labels.​resources | object | `{}` | |
| memcached-parquet-labels.​service.​clusterIP | string | `"None"` | |
| nginx.​affinity | object | `{}` | |
| nginx.​annotations | object | `{}` | |
| nginx.​autoscaling.​behavior | object | `{}` | Ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-configurable-scaling-behavior |
| nginx.​autoscaling.​enabled | bool | `false` | Creates a HorizontalPodAutoscaler for the nginx pods. |
| nginx.​autoscaling.​extraMetrics | list | `[]` | Optional custom and external metrics for the nginx pods to scale on In order to use this option , define a list of of specific following https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-multiple-metrics-and-custom-metrics and https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-metrics-not-related-to-kubernetes-objects |
| nginx.​autoscaling.​maxReplicas | int | `30` | |
| nginx.​autoscaling.​minReplicas | int | `2` | |
| nginx.​autoscaling.​targetCPUUtilizationPercentage | int | `80` | |
| nginx.​autoscaling.​targetMemoryUtilizationPercentage | int | `0` | |
| nginx.​config.​auth_orgs | list | `[]` | Optional list of [auth tenants](https://cortexmetrics.io/docs/guides/auth/) to set in the nginx config |
| nginx.​config.​basicAuthSecretName | string | `""` | Optional name of basic auth secret. In order to use this option, a secret with htpasswd formatted contents at the key ".htpasswd" must exist. For example: apiVersion: v1 kind: Secret metadata: name: my-secret namespace: <same as cortex installation> stringData: .htpasswd: | user1:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0 user2:$apr1$QdR8fNLT$vbCEEzDj7LyqCMyNpSoBh/ Please note that the use of basic auth will not identify organizations the way X-Scope-OrgID does. Thus, the use of basic auth alone will not prevent one tenant from viewing the metrics of another. To ensure tenants are scoped appropriately, explicitly set the `X-Scope-OrgID` header in the nginx config. Example setHeaders: X-Scope-OrgID: $remote_user |
| nginx.​config.​client_max_body_size | string | `"1M"` | ref: http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size |
| nginx.​config.​dnsResolver | string | `"kube-dns.kube-system.svc.cluster.local"` | |
| nginx.​config.​dnsTTL | string | `"15s"` | Including the valid parameter to the `resolver` directive to re-resolve names every `dnsTTL` seconds/minutes |
| nginx.​config.​httpSnippet | string | `""` | arbitrary snippet to inject in the http { } section of the nginx config |
| nginx.​config.​mainSnippet | string | `""` | arbitrary snippet to inject in the top section of the nginx config |
| nginx.​config.​override_push_endpoint | string | `""` | |
| nginx.​config.​serverSnippet | string | `""` | arbitrary snippet to inject in the server { } section of the nginx config |
| nginx.​config.​setHeaders | object | `{}` | |
| nginx.​config.​upstream_protocol | string | `"http"` | protocol for the communication with the upstream |
| nginx.​config.​verboseLogging | bool | `true` | Enables all access logs from nginx, otherwise ignores 2XX and 3XX status codes |
| nginx.​containerSecurityContext.​enabled | bool | `true` | |
| nginx.​containerSecurityContext.​readOnlyRootFilesystem | bool | `false` | |
| nginx.​enabled | bool | `true` | |
| nginx.​env | list | `[]` | |
| nginx.​extraArgs | object | `{}` | Additional Cortex container arguments, e.g. log.level (debug, info, warn, error) |
| nginx.​extraContainers | list | `[]` | |
| nginx.​extraPorts | list | `[]` | |
| nginx.​extraVolumeMounts | list | `[]` | |
| nginx.​extraVolumes | list | `[]` | |
| nginx.​http_listen_port | int | `80` | |
| nginx.​image.​pullPolicy | string | `"IfNotPresent"` | |
| nginx.​image.​repository | string | `"nginx"` | |
| nginx.​image.​tag | float | `1.31` | |
| nginx.​initContainers | list | `[]` | |
| nginx.​livenessProbe.​httpGet.​path | string | `"/healthz"` | |
| nginx.​livenessProbe.​httpGet.​port | string | `"http-metrics"` | |
| nginx.​nodeSelector | object | `{}` | |
| nginx.​persistentVolume.​subPath | string | `nil` | |
| nginx.​podAnnotations | object | `{}` | Pod Annotations |
| nginx.​podDisruptionBudget.​maxUnavailable | string | `"30%"` | |
| nginx.​podLabels | object | `{}` | Pod Labels |
| nginx.​readinessProbe.​httpGet.​path | string | `"/healthz"` | |
| nginx.​readinessProbe.​httpGet.​port | string | `"http-metrics"` | |
| nginx.​replicas | int | `2` | |
| nginx.​resources | object | `{}` | |
| nginx.​securityContext | object | `{}` | |
| nginx.​service.​annotations | object | `{}` | |
| nginx.​service.​labels | object | `{}` | |
| nginx.​service.​port | string | `""` | Replaces default port value from nginx.http_listen_port when set |
| nginx.​service.​type | string | `"ClusterIP"` | |
| nginx.​serviceAccount.​name | string | `""` | "" disables the individual serviceAccount and uses the global serviceAccount for that component |
| nginx.​startupProbe.​failureThreshold | int | `10` | |
| nginx.​startupProbe.​httpGet.​path | string | `"/healthz"` | |
| nginx.​startupProbe.​httpGet.​port | string | `"http-metrics"` | |
| nginx.​strategy.​rollingUpdate.​maxSurge | int | `0` | |
| nginx.​strategy.​rollingUpdate.​maxUnavailable | int | `1` | |
| nginx.​strategy.​type | string | `"RollingUpdate"` | |
| nginx.​terminationGracePeriodSeconds | int | `10` | |
| nginx.​tolerations | list | `[]` | |
| nginx.​topologySpreadConstraints | list | `[]` | |
| overrides_exporter.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​key | string | `"app.kubernetes.io/component"` | |
| overrides_exporter.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​operator | string | `"In"` | |
| overrides_exporter.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​values[0] | string | `"overrides-exporter"` | |
| overrides_exporter.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​topologyKey | string | `"kubernetes.io/hostname"` | |
| overrides_exporter.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​weight | int | `100` | |
| overrides_exporter.​annotations | object | `{}` | |
| overrides_exporter.​containerSecurityContext.​enabled | bool | `true` | |
| overrides_exporter.​containerSecurityContext.​readOnlyRootFilesystem | bool | `true` | |
| overrides_exporter.​enabled | bool | `false` | https://cortexmetrics.io/docs/guides/overrides-exporter/ |
| overrides_exporter.​env | list | `[]` | |
| overrides_exporter.​extraArgs | object | `{}` | Additional Cortex container arguments, e.g. log.level (debug, info, warn, error) |
| overrides_exporter.​extraContainers | list | `[]` | |
| overrides_exporter.​extraPorts | list | `[]` | |
| overrides_exporter.​extraVolumeMounts | list | `[]` | |
| overrides_exporter.​extraVolumes | list | `[]` | |
| overrides_exporter.​initContainers | list | `[]` | |
| overrides_exporter.​lifecycle | object | `{}` | |
| overrides_exporter.​livenessProbe.​httpGet.​path | string | `"/ready"` | |
| overrides_exporter.​livenessProbe.​httpGet.​port | string | `"http-metrics"` | |
| overrides_exporter.​nodeSelector | object | `{}` | |
| overrides_exporter.​podAnnotations | object | `{"prometheus.io/port":"http-metrics","prometheus.io/scrape":"true"}` | Pod Annotations |
| overrides_exporter.​podDisruptionBudget.​maxUnavailable | string | `"30%"` | |
| overrides_exporter.​podLabels | object | `{}` | Pod Labels |
| overrides_exporter.​readinessProbe.​httpGet.​path | string | `"/ready"` | |
| overrides_exporter.​readinessProbe.​httpGet.​port | string | `"http-metrics"` | |
| overrides_exporter.​replicas | int | `1` | |
| overrides_exporter.​resources | object | `{}` | |
| overrides_exporter.​securityContext | object | `{}` | |
| overrides_exporter.​service.​annotations | object | `{}` | |
| overrides_exporter.​service.​labels | object | `{}` | |
| overrides_exporter.​serviceMonitor.​additionalLabels | object | `{}` | |
| overrides_exporter.​serviceMonitor.​enabled | bool | `false` | |
| overrides_exporter.​serviceMonitor.​extraEndpointSpec | object | `{}` | Additional endpoint configuration https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint |
| overrides_exporter.​serviceMonitor.​metricRelabelings | list | `[]` | |
| overrides_exporter.​serviceMonitor.​podTargetLabels | list | `[]` | |
| overrides_exporter.​serviceMonitor.​relabelings | list | `[]` | |
| overrides_exporter.​startupProbe.​failureThreshold | int | `10` | |
| overrides_exporter.​startupProbe.​httpGet.​path | string | `"/ready"` | |
| overrides_exporter.​startupProbe.​httpGet.​port | string | `"http-metrics"` | |
| overrides_exporter.​strategy.​rollingUpdate.​maxSurge | int | `0` | |
| overrides_exporter.​strategy.​rollingUpdate.​maxUnavailable | int | `1` | |
| overrides_exporter.​strategy.​type | string | `"RollingUpdate"` | |
| overrides_exporter.​terminationGracePeriodSeconds | int | `180` | |
| overrides_exporter.​tolerations | list | `[]` | |
| overrides_exporter.​topologySpreadConstraints | list | `[]` | |
| parquet_converter.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​key | string | `"app.kubernetes.io/component"` | |
| parquet_converter.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​operator | string | `"In"` | |
| parquet_converter.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​values[0] | string | `"parquet-converter"` | |
| parquet_converter.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​topologyKey | string | `"kubernetes.io/hostname"` | |
| parquet_converter.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​weight | int | `100` | |
| parquet_converter.​annotations | object | `{}` | |
| parquet_converter.​containerSecurityContext.​enabled | bool | `true` | |
| parquet_converter.​containerSecurityContext.​readOnlyRootFilesystem | bool | `true` | |
| parquet_converter.​enabled | bool | `false` | https://cortexmetrics.io/docs/guides/parquet-mode/ |
| parquet_converter.​env | list | `[]` | |
| parquet_converter.​extraArgs | object | `{}` | Additional Cortex container arguments, e.g. log.level (debug, info, warn, error) |
| parquet_converter.​extraContainers | list | `[]` | |
| parquet_converter.​extraPorts | list | `[]` | |
| parquet_converter.​extraVolumeMounts | list | `[]` | |
| parquet_converter.​extraVolumes | list | `[]` | |
| parquet_converter.​initContainers | list | `[]` | |
| parquet_converter.​lifecycle | object | `{}` | |
| parquet_converter.​livenessProbe.​httpGet.​path | string | `"/ready"` | |
| parquet_converter.​livenessProbe.​httpGet.​port | string | `"http-metrics"` | |
| parquet_converter.​nodeSelector | object | `{}` | |
| parquet_converter.​podAnnotations | object | `{"prometheus.io/port":"http-metrics","prometheus.io/scrape":"true"}` | Pod Annotations |
| parquet_converter.​podLabels | object | `{}` | Pod Labels |
| parquet_converter.​readinessProbe.​httpGet.​path | string | `"/ready"` | |
| parquet_converter.​readinessProbe.​httpGet.​port | string | `"http-metrics"` | |
| parquet_converter.​replicas | int | `1` | |
| parquet_converter.​resources | object | `{}` | |
| parquet_converter.​securityContext | object | `{}` | |
| parquet_converter.​service.​annotations | object | `{}` | |
| parquet_converter.​service.​labels | object | `{}` | |
| parquet_converter.​serviceMonitor.​additionalLabels | object | `{}` | |
| parquet_converter.​serviceMonitor.​enabled | bool | `false` | |
| parquet_converter.​serviceMonitor.​extraEndpointSpec | object | `{}` | Additional endpoint configuration https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint |
| parquet_converter.​serviceMonitor.​metricRelabelings | list | `[]` | |
| parquet_converter.​serviceMonitor.​podTargetLabels | list | `[]` | |
| parquet_converter.​serviceMonitor.​relabelings | list | `[]` | |
| parquet_converter.​startupProbe.​failureThreshold | int | `10` | |
| parquet_converter.​startupProbe.​httpGet.​path | string | `"/ready"` | |
| parquet_converter.​startupProbe.​httpGet.​port | string | `"http-metrics"` | |
| parquet_converter.​strategy.​rollingUpdate.​maxSurge | int | `0` | |
| parquet_converter.​strategy.​rollingUpdate.​maxUnavailable | int | `1` | |
| parquet_converter.​strategy.​type | string | `"RollingUpdate"` | |
| parquet_converter.​terminationGracePeriodSeconds | int | `180` | |
| parquet_converter.​tolerations | list | `[]` | |
| parquet_converter.​topologySpreadConstraints | list | `[]` | |
| purger.​affinity | object | `{}` | |
| purger.​annotations | object | `{}` | |
| purger.​containerSecurityContext.​enabled | bool | `true` | |
| purger.​containerSecurityContext.​readOnlyRootFilesystem | bool | `true` | |
| purger.​enabled | bool | `false` | |
| purger.​env | list | `[]` | Extra env variables to pass to the cortex container |
| purger.​extraArgs | object | `{}` | Additional Cortex container arguments, e.g. log.level (debug, info, warn, error) |
| purger.​extraContainers | list | `[]` | Additional containers to be added to the cortex pod. |
| purger.​extraPorts | list | `[]` | Additional ports to the cortex services. Useful to expose extra container ports. |
| purger.​extraVolumeMounts | list | `[]` | Extra volume mounts that will be added to the cortex container |
| purger.​extraVolumes | list | `[]` | Additional volumes to the cortex pod. |
| purger.​initContainers | list | `[]` | Init containers to be added to the cortex pod. |
| purger.​lifecycle | object | `{}` | |
| purger.​livenessProbe.​httpGet.​path | string | `"/ready"` | |
| purger.​livenessProbe.​httpGet.​port | string | `"http-metrics"` | |
| purger.​livenessProbe.​httpGet.​scheme | string | `"HTTP"` | |
| purger.​nodeSelector | object | `{}` | |
| purger.​podAnnotations.​"prometheus.​io/port" | string | `"8080"` | |
| purger.​podAnnotations.​"prometheus.​io/scrape" | string | `"true"` | |
| purger.​podLabels | object | `{}` | |
| purger.​readinessProbe.​httpGet.​path | string | `"/ready"` | |
| purger.​readinessProbe.​httpGet.​port | string | `"http-metrics"` | |
| purger.​replicas | int | `1` | |
| purger.​resources | object | `{}` | |
| purger.​securityContext | object | `{}` | |
| purger.​service.​annotations | object | `{}` | |
| purger.​service.​labels | object | `{}` | |
| purger.​serviceAccount.​name | string | `""` | |
| purger.​serviceMonitor.​additionalLabels | object | `{}` | |
| purger.​serviceMonitor.​enabled | bool | `false` | |
| purger.​serviceMonitor.​extraEndpointSpec | object | `{}` | |
| purger.​serviceMonitor.​metricRelabelings | list | `[]` | |
| purger.​serviceMonitor.​podTargetLabels | list | `[]` | |
| purger.​serviceMonitor.​relabelings | list | `[]` | |
| purger.​startupProbe.​failureThreshold | int | `60` | |
| purger.​startupProbe.​httpGet.​path | string | `"/ready"` | |
| purger.​startupProbe.​httpGet.​port | string | `"http-metrics"` | |
| purger.​startupProbe.​httpGet.​scheme | string | `"HTTP"` | |
| purger.​startupProbe.​initialDelaySeconds | int | `120` | |
| purger.​startupProbe.​periodSeconds | int | `30` | |
| purger.​strategy.​type | string | `"RollingUpdate"` | |
| purger.​terminationGracePeriodSeconds | int | `60` | |
| purger.​topologySpreadConstraints | list | `[]` | |
| querier.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​key | string | `"app.kubernetes.io/component"` | |
| querier.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​operator | string | `"In"` | |
| querier.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​values[0] | string | `"ingester"` | |
| querier.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​values[1] | string | `"querier"` | |
| querier.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​topologyKey | string | `"kubernetes.io/hostname"` | |
| querier.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​weight | int | `100` | |
| querier.​annotations | object | `{}` | |
| querier.​autoscaling.​behavior | object | `{}` | Ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-configurable-scaling-behavior |
| querier.​autoscaling.​enabled | bool | `false` | Creates a HorizontalPodAutoscaler for the querier pods. |
| querier.​autoscaling.​extraMetrics | list | `[]` | Optional custom and external metrics for the querier pods to scale on In order to use this option , define a list of of specific following https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-multiple-metrics-and-custom-metrics and https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-metrics-not-related-to-kubernetes-objects |
| querier.​autoscaling.​maxReplicas | int | `30` | |
| querier.​autoscaling.​minReplicas | int | `2` | |
| querier.​autoscaling.​targetCPUUtilizationPercentage | int | `80` | |
| querier.​autoscaling.​targetMemoryUtilizationPercentage | int | `0` | |
| querier.​containerSecurityContext.​enabled | bool | `true` | |
| querier.​containerSecurityContext.​readOnlyRootFilesystem | bool | `true` | |
| querier.​enabled | bool | `true` | |
| querier.​env | list | `[]` | |
| querier.​extraArgs | object | `{}` | Additional Cortex container arguments, e.g. log.level (debug, info, warn, error) |
| querier.​extraContainers | list | `[]` | |
| querier.​extraPorts | list | `[]` | |
| querier.​extraVolumeMounts | list | `[]` | |
| querier.​extraVolumes | list | `[]` | |
| querier.​initContainers | list | `[]` | |
| querier.​lifecycle | object | `{}` | |
| querier.​livenessProbe.​httpGet.​path | string | `"/ready"` | |
| querier.​livenessProbe.​httpGet.​port | string | `"http-metrics"` | |
| querier.​nodeSelector | object | `{}` | |
| querier.​persistentVolume.​subPath | string | `nil` | |
| querier.​podAnnotations | object | `{"prometheus.io/port":"8080","prometheus.io/scrape":"true"}` | Pod Annotations |
| querier.​podDisruptionBudget.​maxUnavailable | string | `"30%"` | |
| querier.​podLabels | object | `{}` | Pod Labels |
| querier.​readinessProbe.​httpGet.​path | string | `"/ready"` | |
| querier.​readinessProbe.​httpGet.​port | string | `"http-metrics"` | |
| querier.​replicas | int | `2` | |
| querier.​resources | object | `{}` | |
| querier.​securityContext | object | `{}` | |
| querier.​service.​annotations | object | `{}` | |
| querier.​service.​labels | object | `{}` | |
| querier.​serviceAccount.​name | string | `""` | "" disables the individual serviceAccount and uses the global serviceAccount for that component |
| querier.​serviceMonitor.​additionalLabels | object | `{}` | |
| querier.​serviceMonitor.​enabled | bool | `false` | |
| querier.​serviceMonitor.​extraEndpointSpec | object | `{}` | Additional endpoint configuration https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint |
| querier.​serviceMonitor.​metricRelabelings | list | `[]` | |
| querier.​serviceMonitor.​podTargetLabels | list | `[]` | |
| querier.​serviceMonitor.​relabelings | list | `[]` | |
| querier.​startupProbe.​failureThreshold | int | `10` | |
| querier.​startupProbe.​httpGet.​path | string | `"/ready"` | |
| querier.​startupProbe.​httpGet.​port | string | `"http-metrics"` | |
| querier.​strategy.​rollingUpdate.​maxSurge | int | `0` | |
| querier.​strategy.​rollingUpdate.​maxUnavailable | int | `1` | |
| querier.​strategy.​type | string | `"RollingUpdate"` | |
| querier.​terminationGracePeriodSeconds | int | `180` | |
| querier.​tolerations | list | `[]` | |
| querier.​topologySpreadConstraints | list | `[]` | |
| query_frontend.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​key | string | `"app.kubernetes.io/component"` | |
| query_frontend.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​operator | string | `"In"` | |
| query_frontend.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​values[0] | string | `"query-frontend"` | |
| query_frontend.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​topologyKey | string | `"kubernetes.io/hostname"` | |
| query_frontend.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​weight | int | `100` | |
| query_frontend.​annotations | object | `{}` | |
| query_frontend.​containerSecurityContext.​enabled | bool | `true` | |
| query_frontend.​containerSecurityContext.​readOnlyRootFilesystem | bool | `true` | |
| query_frontend.​enabled | bool | `true` | |
| query_frontend.​env | list | `[]` | |
| query_frontend.​extraArgs | object | `{}` | Additional Cortex container arguments, e.g. log.level (debug, info, warn, error) |
| query_frontend.​extraContainers | list | `[]` | |
| query_frontend.​extraPorts | list | `[]` | |
| query_frontend.​extraVolumeMounts | list | `[]` | |
| query_frontend.​extraVolumes | list | `[]` | |
| query_frontend.​initContainers | list | `[]` | |
| query_frontend.​lifecycle | object | `{}` | |
| query_frontend.​livenessProbe.​httpGet.​path | string | `"/ready"` | |
| query_frontend.​livenessProbe.​httpGet.​port | string | `"http-metrics"` | |
| query_frontend.​nodeSelector | object | `{}` | |
| query_frontend.​persistentVolume.​subPath | string | `nil` | |
| query_frontend.​podAnnotations | object | `{"prometheus.io/port":"8080","prometheus.io/scrape":"true"}` | Pod Annotations |
| query_frontend.​podDisruptionBudget.​maxUnavailable | string | `"30%"` | |
| query_frontend.​podLabels | object | `{}` | Pod Labels |
| query_frontend.​readinessProbe.​httpGet.​path | string | `"/ready"` | |
| query_frontend.​readinessProbe.​httpGet.​port | string | `"http-metrics"` | |
| query_frontend.​replicas | int | `2` | |
| query_frontend.​resources | object | `{}` | |
| query_frontend.​securityContext | object | `{}` | |
| query_frontend.​service.​annotations | object | `{}` | |
| query_frontend.​service.​labels | object | `{}` | |
| query_frontend.​serviceAccount.​name | string | `""` | "" disables the individual serviceAccount and uses the global serviceAccount for that component |
| query_frontend.​serviceMonitor.​additionalLabels | object | `{}` | |
| query_frontend.​serviceMonitor.​enabled | bool | `false` | |
| query_frontend.​serviceMonitor.​extraEndpointSpec | object | `{}` | Additional endpoint configuration https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint |
| query_frontend.​serviceMonitor.​metricRelabelings | list | `[]` | |
| query_frontend.​serviceMonitor.​podTargetLabels | list | `[]` | |
| query_frontend.​serviceMonitor.​relabelings | list | `[]` | |
| query_frontend.​startupProbe.​failureThreshold | int | `10` | |
| query_frontend.​startupProbe.​httpGet.​path | string | `"/ready"` | |
| query_frontend.​startupProbe.​httpGet.​port | string | `"http-metrics"` | |
| query_frontend.​strategy.​rollingUpdate.​maxSurge | int | `0` | |
| query_frontend.​strategy.​rollingUpdate.​maxUnavailable | int | `1` | |
| query_frontend.​strategy.​type | string | `"RollingUpdate"` | |
| query_frontend.​terminationGracePeriodSeconds | int | `180` | |
| query_frontend.​tolerations | list | `[]` | |
| query_frontend.​topologySpreadConstraints | list | `[]` | |
| query_scheduler.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​key | string | `"app.kubernetes.io/component"` | |
| query_scheduler.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​operator | string | `"In"` | |
| query_scheduler.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​values[0] | string | `"query-scheduler"` | |
| query_scheduler.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​topologyKey | string | `"kubernetes.io/hostname"` | |
| query_scheduler.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​weight | int | `100` | |
| query_scheduler.​annotations | object | `{}` | |
| query_scheduler.​containerSecurityContext.​enabled | bool | `true` | |
| query_scheduler.​containerSecurityContext.​readOnlyRootFilesystem | bool | `true` | |
| query_scheduler.​enabled | bool | `false` | If true, querier and query-frontend will connect to it (requires Cortex v1.6.0+) https://cortexmetrics.io/docs/operations/scaling-query-frontend/#query-scheduler |
| query_scheduler.​env | list | `[]` | |
| query_scheduler.​extraArgs | object | `{}` | Additional Cortex container arguments, e.g. log.level (debug, info, warn, error) |
| query_scheduler.​extraContainers | list | `[]` | |
| query_scheduler.​extraPorts | list | `[]` | |
| query_scheduler.​extraVolumeMounts | list | `[]` | |
| query_scheduler.​extraVolumes | list | `[]` | |
| query_scheduler.​initContainers | list | `[]` | |
| query_scheduler.​lifecycle | object | `{}` | |
| query_scheduler.​livenessProbe.​httpGet.​path | string | `"/ready"` | |
| query_scheduler.​livenessProbe.​httpGet.​port | string | `"http-metrics"` | |
| query_scheduler.​nodeSelector | object | `{}` | |
| query_scheduler.​persistentVolume.​subPath | string | `nil` | |
| query_scheduler.​podAnnotations | object | `{"prometheus.io/port":"http-metrics","prometheus.io/scrape":"true"}` | Pod Annotations |
| query_scheduler.​podDisruptionBudget.​maxUnavailable | int | `1` | |
| query_scheduler.​podLabels | object | `{}` | Pod Labels |
| query_scheduler.​readinessProbe.​httpGet.​path | string | `"/ready"` | |
| query_scheduler.​readinessProbe.​httpGet.​port | string | `"http-metrics"` | |
| query_scheduler.​replicas | int | `2` | |
| query_scheduler.​resources | object | `{}` | |
| query_scheduler.​securityContext | object | `{}` | |
| query_scheduler.​service.​annotations | object | `{}` | |
| query_scheduler.​service.​labels | object | `{}` | |
| query_scheduler.​serviceMonitor.​additionalLabels | object | `{}` | |
| query_scheduler.​serviceMonitor.​enabled | bool | `false` | |
| query_scheduler.​serviceMonitor.​extraEndpointSpec | object | `{}` | Additional endpoint configuration https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint |
| query_scheduler.​serviceMonitor.​metricRelabelings | list | `[]` | |
| query_scheduler.​serviceMonitor.​podTargetLabels | list | `[]` | |
| query_scheduler.​serviceMonitor.​relabelings | list | `[]` | |
| query_scheduler.​startupProbe.​failureThreshold | int | `10` | |
| query_scheduler.​startupProbe.​httpGet.​path | string | `"/ready"` | |
| query_scheduler.​startupProbe.​httpGet.​port | string | `"http-metrics"` | |
| query_scheduler.​strategy.​rollingUpdate.​maxSurge | int | `0` | |
| query_scheduler.​strategy.​rollingUpdate.​maxUnavailable | int | `1` | |
| query_scheduler.​strategy.​type | string | `"RollingUpdate"` | |
| query_scheduler.​terminationGracePeriodSeconds | int | `180` | |
| query_scheduler.​tolerations | list | `[]` | |
| query_scheduler.​topologySpreadConstraints | list | `[]` | |
| ruler.​affinity | object | `{}` | |
| ruler.​annotations | object | `{}` | |
| ruler.​autoscaling.​behavior | object | `{}` | Ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-configurable-scaling-behavior |
| ruler.​autoscaling.​enabled | bool | `false` | Creates a HorizontalPodAutoscaler for the ruler. |
| ruler.​autoscaling.​extraMetrics | list | `[]` | Optional custom and external metrics for the ruler pods to scale on In order to use this option , define a list of of specific following https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-multiple-metrics-and-custom-metrics and https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-metrics-not-related-to-kubernetes-objects |
| ruler.​autoscaling.​maxReplicas | int | `30` | |
| ruler.​autoscaling.​minReplicas | int | `2` | |
| ruler.​autoscaling.​targetCPUUtilizationPercentage | int | `80` | |
| ruler.​autoscaling.​targetMemoryUtilizationPercentage | int | `80` | |
| ruler.​containerSecurityContext.​enabled | bool | `true` | |
| ruler.​containerSecurityContext.​readOnlyRootFilesystem | bool | `true` | |
| ruler.​directories | object | `{}` | allow configuring rules via configmap. ref: https://cortexproject.github.io/cortex-helm-chart/guides/configure_rules_via_configmap.html |
| ruler.​enabled | bool | `true` | |
| ruler.​env | list | `[]` | |
| ruler.​extraArgs | object | `{}` | Additional Cortex container arguments, e.g. log.level (debug, info, warn, error) |
| ruler.​extraContainers | list | `[]` | |
| ruler.​extraPorts | list | `[]` | |
| ruler.​extraVolumeMounts | list | `[]` | |
| ruler.​extraVolumes | list | `[]` | |
| ruler.​initContainers | list | `[]` | |
| ruler.​livenessProbe.​httpGet.​path | string | `"/ready"` | |
| ruler.​livenessProbe.​httpGet.​port | string | `"http-metrics"` | |
| ruler.​nodeSelector | object | `{}` | |
| ruler.​podAnnotations | object | `{"prometheus.io/port":"8080","prometheus.io/scrape":"true"}` | Pod Annotations |
| ruler.​podDisruptionBudget.​maxUnavailable | string | `"30%"` | |
| ruler.​podLabels | object | `{}` | Pod Labels |
| ruler.​readinessProbe.​httpGet.​path | string | `"/ready"` | |
| ruler.​readinessProbe.​httpGet.​port | string | `"http-metrics"` | |
| ruler.​replicas | int | `1` | |
| ruler.​resources | object | `{}` | |
| ruler.​securityContext | object | `{}` | |
| ruler.​service.​annotations | object | `{}` | |
| ruler.​service.​labels | object | `{}` | |
| ruler.​serviceAccount.​name | string | `""` | "" disables the individual serviceAccount and uses the global serviceAccount for that component |
| ruler.​serviceMonitor.​additionalLabels | object | `{}` | |
| ruler.​serviceMonitor.​enabled | bool | `false` | |
| ruler.​serviceMonitor.​extraEndpointSpec | object | `{}` | Additional endpoint configuration https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint |
| ruler.​serviceMonitor.​metricRelabelings | list | `[]` | |
| ruler.​serviceMonitor.​podTargetLabels | list | `[]` | |
| ruler.​serviceMonitor.​relabelings | list | `[]` | |
| ruler.​sidecar.​containerSecurityContext.​enabled | bool | `true` | |
| ruler.​sidecar.​containerSecurityContext.​readOnlyRootFilesystem | bool | `true` | |
| ruler.​sidecar.​defaultFolderName | string | `""` | The default folder name, it will create a subfolder under the `folder` and put rules in there instead |
| ruler.​sidecar.​enableUniqueFilenames | bool | `false` | A value of true will produce unique filenames to avoid issues when duplicate data keys exist between ConfigMaps and/or Secrets within the same or multiple Namespaces. |
| ruler.​sidecar.​enabled | bool | `false` | Enable sidecar that collect the configmaps with specified label and stores the included files them into the respective folders |
| ruler.​sidecar.​folder | string | `"/data/rules"` | Folder where the files should be placed. |
| ruler.​sidecar.​folderAnnotation | string | `"k8s-sidecar-target-directory"` | The annotation the sidecar will look for in ConfigMaps and/or Secrets to override the destination folder for files. If the value is a relative path, it will be relative to FOLDER |
| ruler.​sidecar.​healthPort | int | `8081` | The port the kiwigrid/k8s-sidecar listens on for health checks. The image default matches the cortex default listen port (8080), so it must be overridden here. |
| ruler.​sidecar.​image.​repository | string | `"kiwigrid/k8s-sidecar"` | |
| ruler.​sidecar.​image.​sha | string | `""` | |
| ruler.​sidecar.​image.​tag | string | `"2.7.3"` | |
| ruler.​sidecar.​imagePullPolicy | string | `"IfNotPresent"` | |
| ruler.​sidecar.​label | string | `"cortex_rules"` | label that the configmaps with rules are marked with |
| ruler.​sidecar.​labelValue | string | `""` | The value for the label you want to filter your resources on. Don't set a value to filter by any value |
| ruler.​sidecar.​readinessProbe.​httpGet.​path | string | `"/healthz"` | |
| ruler.​sidecar.​readinessProbe.​httpGet.​port | string | `"sidecar-health"` | |
| ruler.​sidecar.​readinessProbe.​periodSeconds | int | `5` | |
| ruler.​sidecar.​resource | string | `"both"` | The resource type that the operator will filter for. Can be configmap, secret or both |
| ruler.​sidecar.​resources | object | `{}` | |
| ruler.​sidecar.​searchNamespace | string | `""` | The Namespace(s) from which resources will be watched. For multiple namespaces, use a comma-separated string like "default,test". If not set or set to ALL, it will watch all Namespaces. |
| ruler.​sidecar.​skipTlsVerify | bool | `false` | Set to true to skip tls verification for kube api calls |
| ruler.​sidecar.​startupProbe.​httpGet.​path | string | `"/healthz"` | |
| ruler.​sidecar.​startupProbe.​httpGet.​port | string | `"sidecar-health"` | |
| ruler.​sidecar.​startupProbe.​periodSeconds | int | `5` | |
| ruler.​sidecar.​watchMethod | string | `""` | Determines how kopf-k8s-sidecar will run. If WATCH it will run like a normal operator forever. If LIST it will gather the matching configmaps and secrets currently present, write those files to the destination directory and die |
| ruler.​startupProbe.​failureThreshold | int | `10` | |
| ruler.​startupProbe.​httpGet.​path | string | `"/ready"` | |
| ruler.​startupProbe.​httpGet.​port | string | `"http-metrics"` | |
| ruler.​strategy.​rollingUpdate.​maxSurge | int | `0` | |
| ruler.​strategy.​rollingUpdate.​maxUnavailable | int | `1` | |
| ruler.​strategy.​type | string | `"RollingUpdate"` | |
| ruler.​terminationGracePeriodSeconds | int | `180` | |
| ruler.​tolerations | list | `[]` | |
| ruler.​topologySpreadConstraints | list | `[]` | |
| ruler.​validation.​enabled | bool | `true` | Checks that the ruler is compatible with horizontal scaling, as documented in https://cortexmetrics.io/docs/guides/ruler-sharding/. You may need to disable this if your config is compatible, but not understood by the validator. |
| runtimeconfigmap.​annotations | object | `{}` | |
| runtimeconfigmap.​create | bool | `true` | If true, a configmap for the `runtime_config` will be created. If false, the configmap _must_ exist already on the cluster or pods will fail to create. |
| runtimeconfigmap.​runtime_config | object | `{}` | https://cortexmetrics.io/docs/configuration/arguments/#runtime-configuration-file |
| serviceAccount.​annotations | object | `{}` | |
| serviceAccount.​automountServiceAccountToken | bool | `true` | |
| serviceAccount.​create | bool | `true` | |
| serviceAccount.​name | string | `nil` | |
| store_gateway.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​key | string | `"app.kubernetes.io/component"` | |
| store_gateway.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​operator | string | `"In"` | |
| store_gateway.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​labelSelector.​matchExpressions[0].​values[0] | string | `"store-gateway"` | |
| store_gateway.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​podAffinityTerm.​topologyKey | string | `"kubernetes.io/hostname"` | |
| store_gateway.​affinity.​podAntiAffinity.​preferredDuringSchedulingIgnoredDuringExecution[0].​weight | int | `100` | |
| store_gateway.​annotations | object | `{}` | |
| store_gateway.​autoscaling.​behavior | object | `{}` | Ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-configurable-scaling-behavior |
| store_gateway.​autoscaling.​enabled | bool | `false` | |
| store_gateway.​autoscaling.​extraMetrics | list | `[]` | Optional custom and external metrics for the store gateway pods to scale on In order to use this option , define a list of of specific following https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-multiple-metrics-and-custom-metrics and https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-metrics-not-related-to-kubernetes-objects |
| store_gateway.​autoscaling.​maxReplicas | int | `30` | |
| store_gateway.​autoscaling.​minReplicas | int | `3` | |
| store_gateway.​autoscaling.​targetMemoryUtilizationPercentage | int | `80` | |
| store_gateway.​containerSecurityContext.​enabled | bool | `true` | |
| store_gateway.​containerSecurityContext.​readOnlyRootFilesystem | bool | `true` | |
| store_gateway.​enabled | bool | `true` | |
| store_gateway.​env | list | `[]` | |
| store_gateway.​extraArgs | object | `{}` | Additional Cortex container arguments, e.g. log.level (debug, info, warn, error) |
| store_gateway.​extraContainers | list | `[]` | |
| store_gateway.​extraPorts | list | `[]` | |
| store_gateway.​extraVolumeMounts | list | `[]` | |
| store_gateway.​extraVolumes | list | `[]` | |
| store_gateway.​initContainers | list | `[]` | |
| store_gateway.​livenessProbe | object | `{}` | |
| store_gateway.​nodeSelector | object | `{}` | |
| store_gateway.​persistentVolume.​accessModes | list | `["ReadWriteOnce"]` | Store-gateway data Persistent Volume access modes Must match those of existing PV or dynamic provisioner Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ |
| store_gateway.​persistentVolume.​annotations | object | `{}` | Store-gateway data Persistent Volume Claim annotations |
| store_gateway.​persistentVolume.​enabled | bool | `true` | If true Store-gateway will create/use a Persistent Volume Claim If false, use emptyDir |
| store_gateway.​persistentVolume.​retentionPolicy | object | `{}` | StatefulSetAutoDeletePVC feature https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#persistentvolumeclaim-retention |
| store_gateway.​persistentVolume.​size | string | `"2Gi"` | Store-gateway data Persistent Volume size |
| store_gateway.​persistentVolume.​storageClass | string | `nil` | Store-gateway data Persistent Volume Storage Class If defined, storageClassName: <storageClass> If set to "-", storageClassName: "", which disables dynamic provisioning If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. |
| store_gateway.​persistentVolume.​subPath | string | `""` | Subdirectory of Store-gateway data Persistent Volume to mount Useful if the volume's root directory is not empty |
| store_gateway.​podAnnotations | object | `{"prometheus.io/port":"8080","prometheus.io/scrape":"true"}` | Pod Annotations |
| store_gateway.​podDisruptionBudget.​maxUnavailable | int | `1` | |
| store_gateway.​podLabels | object | `{}` | Pod Labels |
| store_gateway.​podManagementPolicy | string | `"OrderedReady"` | https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies |
| store_gateway.​readinessProbe.​httpGet.​path | string | `"/ready"` | |
| store_gateway.​readinessProbe.​httpGet.​port | string | `"http-metrics"` | |
| store_gateway.​replicas | int | `1` | |
| store_gateway.​resources | object | `{}` | |
| store_gateway.​securityContext | object | `{}` | |
| store_gateway.​service.​annotations | object | `{}` | |
| store_gateway.​service.​labels | object | `{}` | |
| store_gateway.​serviceAccount.​name | string | `""` | "" disables the individual serviceAccount and uses the global serviceAccount for that component |
| store_gateway.​serviceMonitor.​additionalLabels | object | `{}` | |
| store_gateway.​serviceMonitor.​enabled | bool | `false` | |
| store_gateway.​serviceMonitor.​extraEndpointSpec | object | `{}` | Additional endpoint configuration https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint |
| store_gateway.​serviceMonitor.​metricRelabelings | list | `[]` | |
| store_gateway.​serviceMonitor.​podTargetLabels | list | `[]` | |
| store_gateway.​serviceMonitor.​relabelings | list | `[]` | |
| store_gateway.​startupProbe.​failureThreshold | int | `60` | |
| store_gateway.​startupProbe.​httpGet.​path | string | `"/ready"` | |
| store_gateway.​startupProbe.​httpGet.​port | string | `"http-metrics"` | |
| store_gateway.​startupProbe.​httpGet.​scheme | string | `"HTTP"` | |
| store_gateway.​startupProbe.​initialDelaySeconds | int | `120` | |
| store_gateway.​startupProbe.​periodSeconds | int | `30` | |
| store_gateway.​strategy.​type | string | `"RollingUpdate"` | |
| store_gateway.​terminationGracePeriodSeconds | int | `240` | |
| store_gateway.​tolerations | list | `[]` | |
| store_gateway.​topologySpreadConstraints | list | `[]` | |
| useConfigMap | bool | `false` | |
| useExternalConfig | bool | `false` | |
================================================
FILE: README.md.gotmpl
================================================
<!-- README.md is a generated file. Make any changes in README.md.gotmpl or values.yaml. -->
{{ template "chart.header" . }}
{{ template "chart.deprecationWarning" . }}
{{ template "chart.badgesSection" . }}
{{ template "chart.description" . }}
{{ template "chart.homepageLine" . }}
{{ template "chart.maintainersSection" . }}
## Documentation
Checkout our documentation for the cortex-helm-chart [here](https://cortexproject.github.io/cortex-helm-chart/)
## Dependencies
### Key-Value store
Cortex requires a Key-Value (KV) store to store the ring. It can use traditional KV stores like [Consul](https://www.consul.io/) or [etcd](https://etcd.io/), but it can also build its own KV store on top of memberlist library using a gossip algorithm.
The recommended approach is to use the built-in memberlist as a KV store, where supported.
External KV stores can be installed alongside Cortex using their respective helm charts https://github.com/bitnami/charts/tree/master/bitnami/etcd and https://github.com/hashicorp/consul-k8s/tree/main/charts/consul.
### Storage
Cortex requires a storage backend to store metrics and indexes.
See [cortex documentation](https://cortexmetrics.io/docs/) for details on storage types and documentation
## Installation
[Helm](https://helm.sh) must be installed to use the charts.
Please refer to Helm's [documentation](https://helm.sh/docs/) to get started.
Once Helm is set up properly, add the repo as follows:
```bash
helm repo add cortex-helm https://cortexproject.github.io/cortex-helm-chart
```
Cortex can now be installed with the following command:
```bash
helm install cortex --namespace cortex cortex-helm/cortex
```
If you have custom options or values you want to override:
```bash
helm install cortex --namespace cortex -f my-cortex-values.yaml cortex-helm/cortex
```
Specific versions of the chart can be installed using the `--version` option, with the default being the latest release.
What versions are available for installation can be listed with the following command:
```bash
helm search repo cortex-helm
```
As part of this chart many different pods and services are installed which all
have varying resource requirements. Please make sure that you have sufficient
resources (CPU/memory) available in your cluster before installing Cortex Helm
chart.
## Upgrades
To upgrade Cortex use the following command:
```bash
helm upgrade cortex -f my-cortex-values.yaml cortex-helm/cortex
```
Note that it might be necessary to use `--reset-values` since some default values in the values.yaml might have changed or were removed.
Source code can be found [here](https://cortexmetrics.io/)
{{ template "chart.requirementsSection" . }}
{{ define "chart.valuesTable" }}
| Key | Type | Default | Description |
|-----|------|---------|-------------|
{{- range .Values }}
| {{ .Key | replace "." ".​" }} | {{ .Type }} | {{ if .Default }}{{ .Default }}{{ else }}{{ .AutoDefault }}{{ end }} | {{ if .Description }}{{ .Description }}{{ else }}{{ .AutoDescription }}{{ end }} |
{{- end }}
{{ end }}
{{ template "chart.valuesSection" . }}
================================================
FILE: ci/test-configmap-values.yaml
================================================
ingress:
enabled: true
useConfigMap: true
config:
ingester:
lifecycler:
join_after: 30s
final_sleep: 30s
tokens_file_path: "/data/tokens"
ring:
replication_factor: 1
kvstore:
store: "memberlist"
blocks_storage:
backend: "filesystem"
tsdb:
dir: "/data/tsdb"
bucket_store:
sync_dir: "/data/tsdb-sync"
filesystem:
dir: "/data/store"
distributor:
ring:
kvstore:
store: memberlist
ruler:
ring:
kvstore:
store: memberlist
ruler_storage:
backend: "filesystem"
filesystem:
dir: "/data/store"
alertmanager_storage:
backend: "filesystem"
filesystem:
dir: "/data/store"
memberlist:
join_members:
- '{{ include "cortex.fullname" $ }}-memberlist'
ingester:
replicas: 1
autoscaling:
enabled: true
minReplicas: 1
statefulSet:
enabled: false
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
compactor:
replicas: 1
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
distributor:
replicas: 1
autoscaling:
enabled: true
minReplicas: 1
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
querier:
replicas: 1
autoscaling:
enabled: true
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
query_frontend:
replicas: 1
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
nginx:
replicas: 1
autoscaling:
enabled: true
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
config:
httpSnippet: |-
# http snippet
mainSnippet: |-
# main snippet
serverSnippet: |-
# server snippet
runtimeconfigmap:
annotations:
foo: bar
alertmanager:
replicas: 1
statefulSet:
enabled: false
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
sidecar:
enabled: true
ruler:
replicas: 1
enabled: true
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
sidecar:
enabled: true
store_gateway:
startupProbe: null
replicas: 1
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
memcached-frontend:
enabled: true
architecture: standalone
replicaCount: 1
resources:
requests:
cpu: 0
memory: 0
memcached-blocks:
enabled: true
architecture: standalone
replicaCount: 1
resources:
requests:
cpu: 0
memory: 0
memcached-blocks-index:
enabled: true
architecture: standalone
replicaCount: 1
resources:
requests:
cpu: 0
memory: 0
memcached-blocks-metadata:
enabled: true
architecture: standalone
replicaCount: 1
resources:
requests:
cpu: 0
memory: 0
================================================
FILE: ci/test-deployment-values.yaml
================================================
ingress:
enabled: true
config:
ingester:
lifecycler:
join_after: 30s
final_sleep: 30s
tokens_file_path: "/data/tokens"
ring:
replication_factor: 1
kvstore:
store: "memberlist"
blocks_storage:
backend: "filesystem"
tsdb:
dir: "/data/tsdb"
bucket_store:
sync_dir: "/data/tsdb-sync"
filesystem:
dir: "/data/store"
distributor:
ring:
kvstore:
store: memberlist
ruler:
ring:
kvstore:
store: memberlist
ruler_storage:
backend: "filesystem"
filesystem:
dir: "/data/store"
alertmanager_storage:
backend: "filesystem"
filesystem:
dir: "/data/store"
memberlist:
join_members:
- '{{ include "cortex.fullname" $ }}-memberlist'
ingester:
replicas: 1
autoscaling:
enabled: true
minReplicas: 1
statefulSet:
enabled: false
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
compactor:
replicas: 1
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
distributor:
replicas: 1
autoscaling:
enabled: true
minReplicas: 1
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
querier:
replicas: 1
autoscaling:
enabled: true
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
query_frontend:
replicas: 1
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
query_scheduler:
replicas: 1
enabled: true
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
nginx:
replicas: 1
autoscaling:
enabled: true
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
config:
httpSnippet: |-
# http snippet
mainSnippet: |-
# main snippet
serverSnippet: |-
# server snippet
runtimeconfigmap:
annotations:
foo: bar
alertmanager:
replicas: 3
statefulSet:
enabled: false
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
sidecar:
enabled: true
ruler:
replicas: 1
enabled: true
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
sidecar:
enabled: true
store_gateway:
startupProbe: null
replicas: 1
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
memcached-frontend:
enabled: true
architecture: standalone
replicaCount: 1
resources:
requests:
cpu: 0
memory: 0
memcached-blocks:
enabled: true
architecture: standalone
replicaCount: 1
resources:
requests:
cpu: 0
memory: 0
memcached-blocks-index:
enabled: true
architecture: standalone
replicaCount: 1
resources:
requests:
cpu: 0
memory: 0
memcached-blocks-metadata:
enabled: true
architecture: standalone
replicaCount: 1
resources:
requests:
cpu: 0
memory: 0
================================================
FILE: ci/test-sts-values.yaml
================================================
ingress:
enabled: true
config:
ingester:
lifecycler:
join_after: 30s
final_sleep: 30s
tokens_file_path: "/data/tokens"
ring:
replication_factor: 1
kvstore:
store: "memberlist"
blocks_storage:
backend: "filesystem"
tsdb:
dir: "/data/tsdb"
bucket_store:
sync_dir: "/data/tsdb-sync"
filesystem:
dir: "/data/store"
distributor:
ring:
kvstore:
store: memberlist
ruler:
ring:
kvstore:
store: memberlist
ruler_storage:
backend: "filesystem"
filesystem:
dir: "/data/store"
alertmanager_storage:
backend: "filesystem"
filesystem:
dir: "/data/store"
memberlist:
join_members:
- '{{ include "cortex.fullname" $ }}-memberlist'
ingester:
replicas: 1
autoscaling:
enabled: true
minReplicas: 1
statefulSet:
enabled: true
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
compactor:
replicas: 1
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
distributor:
replicas: 1
autoscaling:
enabled: true
minReplicas: 1
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
querier:
replicas: 1
autoscaling:
enabled: true
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
query_frontend:
replicas: 1
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
nginx:
replicas: 1
autoscaling:
enabled: true
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
config:
httpSnippet: |-
# http snippet
mainSnippet: |-
# main snippet
serverSnippet: |-
# server snippet
runtimeconfigmap:
annotations:
foo: bar
alertmanager:
replicas: 3
statefulSet:
enabled: true
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
sidecar:
enabled: true
ruler:
replicas: 1
enabled: true
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
sidecar:
enabled: true
store_gateway:
startupProbe: null
replicas: 1
extraVolumes:
- name: tmp-test
emptyDir: {}
extraVolumeMounts:
- name: tmp-test
mountPath: /tmp-test
memcached-frontend:
enabled: true
architecture: standalone
replicaCount: 1
resources:
requests:
cpu: 0
memory: 0
memcached-blocks:
enabled: true
architecture: standalone
replicaCount: 1
resources:
requests:
cpu: 0
memory: 0
memcached-blocks-index:
enabled: true
architecture: standalone
replicaCount: 1
resources:
requests:
cpu: 0
memory: 0
memcached-blocks-metadata:
enabled: true
architecture: standalone
replicaCount: 1
resources:
requests:
cpu: 0
memory: 0
================================================
FILE: ct.yaml
================================================
# See https://github.com/helm/chart-testing#configuration
remote: origin
validate-maintainers: false # ct requires the maintainers to be a github name, which is not valid for this chart.
charts:
- "./"
chart-repos:
- base-charts=https://charts.helm.sh/stable
- bitnami=https://charts.bitnami.com/bitnami
helm-extra-args: --timeout 600s
================================================
FILE: docs/.gitignore
================================================
_site
.sass-cache
.jekyll-cache
.jekyll-metadata
vendor
================================================
FILE: docs/404.html
================================================
---
permalink: /404.html
layout: default
---
<style type="text/css" media="screen">
.container {
margin: 10px auto;
max-width: 600px;
text-align: center;
}
h1 {
margin: 30px 0;
font-size: 4em;
line-height: 1;
letter-spacing: -1px;
}
</style>
<div class="container">
<h1>404</h1>
<p><strong>Page not found :(</strong></p>
<p>The requested page could not be found.</p>
</div>
================================================
FILE: docs/Gemfile
================================================
source "https://rubygems.org"
# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
# bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
# gem "jekyll", "~> 4.2.0"
# This is the default theme for new Jekyll sites. You may change this to anything you like.
gem "minima", "~> 2.5"
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
gem "github-pages","~> 228", group: :jekyll_plugins
gem "just-the-docs"
# If you have any plugins, put them here!
group :jekyll_plugins do
gem "jekyll-feed", "~> 0.12"
end
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library.
platforms :mingw, :x64_mingw, :mswin, :jruby do
gem "tzinfo", "~> 2.0"
gem "tzinfo-data"
end
# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
================================================
FILE: docs/_config.yml
================================================
title: cortex-helm-chart
email: cortex-team@googlegroups.com
description: >-
Cortex is a horizontally scalable, highly available, multi-tenant, long term Prometheus.
The cortex-helm-chart helps the operator with deploying cortex on a Kubernetes cluster.
twitter_username: CortexMetrics
github_username: cortexproject
# Build settings
remote_theme: pmarsceill/just-the-docs
# color_scheme: "dark"
footer_content: "Copyright © 2022 cortexproject. Distributed by an <a href=\"https://github.com/cortexproject/cortex-helm-chart/blob/master/LICENSE\">Apache License 2.0.</a>"
================================================
FILE: docs/_layouts/home.html
================================================
---
layout: default
---
{{ content }}
================================================
FILE: docs/_layouts/page.html
================================================
---
layout: default
---
{{ content }}
================================================
FILE: docs/development/developing_the_docs.md
================================================
---
layout: page
title: Working with the cortex-helm-chart docs
parent: Development
has_children: false
has_toc: false
---
# Working with the cortex-helm-chart docs
{: .no_toc }
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
# Setup
The cortex-helm-chart docs uses [jekyll](https://jekyllrb.com/) with the [just-the-docs](https://github.com/pmarsceill/just-the-docs) theme. Unfortunately due to security concerns GitHub doesn't let us preview from pull requests or different branches. However GitHub created [this](https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/testing-your-github-pages-site-locally-with-jekyll) guide on how to test your changes locally.
# Preview
After installing ruby and bundle. Simply change into the `/docs` folder of the cortex-helm-chart and run:
```
bundle exec jekyll serve --incremental --livereload
```
For further options you can consult `bundle exec jekyll serve --help`
================================================
FILE: docs/development.md
================================================
---
layout: page
title: Development
nav_order: 3
has_children: true
permalink: /docs/development
---
# Development
{: .no_toc }
Tutorials on how to develop the chart locally
{: .fs-6 .fw-300 }
================================================
FILE: docs/guides/configure_configmap.markdown
================================================
---
layout: page
title: Configuring Cortex with configmap
parent: Guides
has_children: false
has_toc: false
---
# Configuring Cortex with configmap
{: .no_toc }
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
# Configuring Cortex with configmap
By default, cortex configuration is managed using a `Secret`. To use a `ConfigMap` instead, set **useConfigMap**:
{% raw %}
```yaml
useConfigMap: true
```
{% endraw %}
Note: if **useConfigMap** is enabled, sensitive values should be stored in separate secrets, then referenced in the config [using environment variables](https://cortexmetrics.io/docs/configuration/configuration-file/#use-environment-variables-in-the-configuration). Use `extraVolumes`, `extraVolumeMounts`, `extraEnvs`, and `extraArgs` to add environment variables from secrets.
================================================
FILE: docs/guides/configure_memberlist.markdown
================================================
---
layout: page
title: Configure memberlist
parent: Guides
has_children: false
has_toc: false
---
# Configure memberlist
{: .no_toc }
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
# Setup
The cortex-helm-chart recommends using memberlist as the kvstore (not available yet for the ha-tracker kvstore). Cortex components deployed with the cortex-helm-chart will automatically join the gossip ring. More Information on why memberlist might be a good idea can be found [here](https://grafana.com/blog/2020/03/25/how-were-using-gossip-to-improve-cortex-and-loki-availability/)
For example:
```yaml
[...]
kvstore:
store: "memberlist"
```
================================================
FILE: docs/guides/configure_memcached.markdown
================================================
---
layout: page
title: Configure memcached
parent: Guides
has_children: false
has_toc: false
---
# Configuring memcached as the caching store
{: .no_toc }
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
# Configuring memcached as the caching store
Correctly configuring memcached for your needs is a very delicate task. But courtesy of [@thobianchi](https://github.com/thobianchi) this might be a good start.
{% raw %}
```yaml
index_cache:
backend: memcached
memcached:
addresses: 'dns+{{ include "cortex.fullname" $ }}-memcached-blocks-index:11211'
timeout: 300ms
max_idle_connections: 750
max_async_concurrency: 100
max_async_buffer_size: 10000000
max_get_multi_concurrency: 750
max_get_multi_batch_size: 1000
max_item_size: 16777216
chunks_cache:
backend: memcached
memcached:
addresses: 'dns+{{ include "cortex.fullname" $ }}-memcached-blocks:11211'
timeout: 300ms
max_idle_connections: 750
max_async_concurrency: 100
max_async_buffer_size: 10000000
max_get_multi_concurrency: 750
max_get_multi_batch_size: 1000
max_item_size: 33554432
metadata_cache:
backend: memcached
memcached:
addresses: 'dns+{{ include "cortex.fullname" $ }}-blocks-metadata:11211'
timeout: 300ms
max_idle_connections: 750
max_async_concurrency: 100
max_async_buffer_size: 10000000
max_get_multi_concurrency: 750
max_get_multi_batch_size: 1000
max_item_size: 16777216
```
{% endraw %}
================================================
FILE: docs/guides/configure_ruler_and_alertmanager_with_configmap.markdown
================================================
---
layout: page
title: Configure Ruler and Alertmanager with configmap
parent: Guides
has_children: false
has_toc: false
---
# Configure Ruler and Alertmanager with configmap
{: .no_toc }
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
# Preface
Cortex's Ruler and Alertmanager can be setup to use ConfigMaps to provide themselves with a configuration that can be dynamically updated.
We simply put ConfigMaps into the same namespace where cortex is running, and they are automatically detected and mounted as files to the Ruler and/or AlertManager containers.
The containers are also constantly polling for changes to the ConfigMaps. If any changes are found, the configuration file on the container will be updated.
It should be noted that this guide is assuming that multi-tenancy is enabled :
```yaml
auth_enabled: true
```
# Setup
In order to get this working, we must do a couple things.
## Create Ruler ConfigMap
To provide the Ruler with the *rules* to alert on, we must create a ConfigMap with the desired ruleset. How you maintain and deploy the ConfigMap is completely in your control, the only requirement is that the ConfigMap be on the same namespace as the Ruler.
**IMPORTANT** things to note:
- This ruleset is ONLY for tenantfoo (We will explicitly map it to tenantfoo later).
- The section under `tenantfoo.yaml` is validated and interpreted exactly as a [Prometheus alerting rules configuration](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/) would be. How you configure this is completely up to you.
- [Prometheus recording rules](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/) are also configured here in the same way as alerting rules.
```yaml
kind: ConfigMap
metadata:
name: tenantfoo-ruler-config
namespace: cortex
apiVersion: v1
data:
tenantfoo.yaml: |-
groups:
- name: <group name>
rules:
- alert: <alert name>
expr: <promql expression>
for: <duration>
labels:
severity: <severity>
annotations:
description: <description>
<remainder of alerts...>
```
## Create Alertmanager ConfigMap
To provide the Alertmanager with the information needed to *route* notifications to stakeholders, we must create a ConfigMap with the desired routing rules. How you maintain and deploy the ConfigMap is completely in your control, the only requirement is that the ConfigMap be on the same namespace as the Alertmanager.
**IMPORTANT** things to note:
- These routing rules are ONLY for tenantfoo. The Alertmanager takes the key under `data` (excluding `.yaml`) and uses it as the tenant name for that specific config.
- The section under `tenantfoo.yaml` is validated and interpreted exactly as a [Alertmanager configuration](hhttps://prometheus.io/docs/alerting/latest/configuration/#configuration-file) would be. How you configure this is completely up to you.
```yaml
kind: ConfigMap
metadata:
name: tenantfoo-alertmanager-config
namespace: cortex
apiVersion: v1
data:
tenantfoo.yaml: |
global:
resolve_timeout: <duration>
http_config: {}
smtp_from: ExamplePerson <exampleperson@example.com>
smtp_hello: example.com
smtp_smarthost: example-smtp.example.com
route:
receiver: team-X-mails
group_by: ['alertname']
group_wait: <duration>
group_interval: <duration>
repeat_interval: <duration>
receivers:
- name: 'team-X-mails'
email_configs:
- to: 'example@example.com'
```
## Helm Chart Configuration
Now that the ConfigMaps are created, we can tinker the helm chart to achieve our goal.
### Configuration for Ruler and Alertmanager Config
Add this to the `values.yaml` under the `config` section as shown.
```yaml
config:
ruler:
enable_api: true
# already set-up temporary emptyDir volume. Cortex will parse rules from /data/rules
# and copy them here for prometheus rule evaluation
rule_path: /rules
ruler_storage:
backend: "local"
local:
# where your mounted configmap data will be temporary stored
directory: /data/rules
alertmanager:
enable_api: true
# temporary volume if not using stateful alertmanagers
data_dir: /data
alertmanager_storage:
backend: "local"
local:
# temporary volume if not using stateful alertmanagers
path: /data
```
### Configuration for Ruler and Alertmanager
Add this to the `values.yaml`.
Note that when we mount `tenantfoo-ruler-config`, we mount it under a folder which should be named after the tenant it corresponds to. In this situation, since we want `tenantfoo-ruler-config` to be the alerting rules for `tenantfoo`, we mount it under `/data/rules/tenantfoo`.
Also note that for `tenantfoo-alertmanager-config`, we similarily mount it under a folder specific to that tenant. Although it will not use the folder name as the tenant name (it instead uses the key name under `data` in the ConfigMap), it simplifies things if you do so.
```yaml
ruler:
extraVolumes:
- configMap:
defaultMode: 420
name: tenantfoo-ruler-config
name: tenantfoo-ruler-config
extraVolumeMounts:
- name: tenantfoo-ruler-config
mountPath: /data/rules/tenantfoo
alertmanager:
extraVolumes:
- configMap:
defaultMode: 420
name: tenantfoo-alertmanager-config
name: tenantfoo-alertmanager-config
extraVolumeMounts:
- name: tenantfoo-alertmanager-config
mountPath: /data/tenantfoo
```
# Result
You can now install the helm chart.
You may use the section below to verify the configuration went according to plan.
### Verify Alertmanager
1. Port-forward the alertmanager pod
2. Run `curl -X GET -H "X-Scope-OrgID: <name of tenant>" localhost:8080/api/v1/alerts`
3. Verify the correct configuration shows up
### Verify Ruler
1. Port-forward the ruler pod
2. Run `curl -X GET -H "X-Scope-OrgID: <name of tenant>" localhost:8080/api/v1/rules`
3. Verify the correct configuration shows up
# Moving forward
You can also follow this guide if you don't have multi-tenancy enabled. However, in this case, you will not get alerting/routing rules specific to each tenant.
Defining fine-grained alerting/routing rules per tenant is when you really get to eat the fruits of your labour when deploying multi-tenant alertmanager/ruler. For example, lets say you currently only have routing rules for tenantfoo. If you wanted to add specific routing rules for another tenant, tenantB, you will do the following:
1. Create another set of ConfigMaps for the new tenants, being sure to adhere to the naming policies stated in this guide
2. Add entries under `extraVolumes` and `extraVolumeMounts` for the Ruler and Alertmanager. All while being sure to adhere to the naming policies stated in this guide
3. [Verify the new tenant is configured](#result)
================================================
FILE: docs/guides/configure_rules_via_configmap.markdown
================================================
---
layout: page
title: Configure rules via configmap
parent: Guides
has_children: false
has_toc: false
---
# Configure rules via configmap
{: .no_toc }
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
# Configure rules via configmap
In your cortex-helm-chart you can now specify a static configuration of ruler rules.
```yaml
ruler:
directories:
tenant_foo:
rules1.txt: |
groups:
- name: should_fire
rules:
- alert: HighPercentageError
expr: |
sum(rate({app="foo", env="production"} |= "error" [5m])) by (job)
/
sum(rate({app="foo", env="production"}[5m])) by (job)
> 0.05
for: 10m
labels:
severity: warning
annotations:
summary: High error rate
```
================================================
FILE: docs/guides/configure_rules_via_sidecar.markdown
================================================
---
layout: page
title: Configure rules via sidecar
parent: Guides
has_children: false
has_toc: false
---
# Configure rules via sidecar
{: .no_toc }
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
# Rules and AlertManager configuration
Cortex can be configured to use a sidecar container in the Ruler and AlertManager to dynamically discover rules and AlertManager config/templates that are declared as ConfigMaps to allow easy and extensible configuration that avoids having to store state in the Cortex system itself (via config service, etc).
Put ConfigMaps into the specified namespace, and they are automatically detected and added as files to the Ruler and/or AlertManager containers, both of which are polling for changes on the filesystem and will make the new configurations go live dynamically.
This feature is disabled by default. Here is a simple example:
Please note that this is only supported with the **local** backend. Otherwise cortex will overwrite what the operator[^1] puts in the folder with what is in s3/gcs/azure/swift. Cortex does not 2-way sync the files. Also please be aware of the following:
- local alertmanager config storage is read-only (cortex API is severely limited to read-only requests)
- local alertmanager storage does not support state persistency (however your configurations are saved in etcd via kubernetes)
- local ruler storage does not support RuleGroups
- local ruler storage does not support namespaces
[^1]: Also referenced here as the sidecar. Effectively the sidecar is an image which is an kubernetes operator.
## Helm values config
```yaml
ruler:
sidecar:
enabled: true
searchNamespace: cortex-rules
alertmanager:
sidecar:
enabled: true
searchNamespace: cortex-alertmanager
```
And here are the related configuration values in AlertManager and Ruler:
```yaml
config:
ruler:
enable_api: true
# already set-up temporary emptyDir volume. Cortex will parse rules from /data/rules
# and copy them here for prometheus rule evaluation
rule_path: /rules
ruler_storage:
backend: "local"
local:
# temporary volume of type emptyDir
directory: /data/rules
alertmanager:
enable_api: true
# temporary volume if not using stateful alertmanagers
data_dir: /data
alertmanager_storage:
backend: "local"
local:
# temporary volume if not using stateful alertmanagers
path: /data
```
## Creating alerting/recording rules and alertmanager configs
In AlertManager, the `data_dir` and local storage directory should be the same.
In the Ruler, there need to be two separate volumes. One is used by Cortex for evaluating alerting and recording rules (/rules) and should be temporary. The other is used by the user (YOU) to temporarily store your alerting and recording rules (/data/rules).
Example ConfigMap containing an alerting rule:
{% raw %}
```yaml
kind: ConfigMap
metadata:
annotations:
# Override destination folder so we can save the config under /data/rules/<TENANT>/tenantfoo.yaml
k8s-sidecar-target-directory: /data/rules/tenantfoo
labels:
# Label cortex_rules must exist unless overridden by ruler.sidecar.label
cortex_rules: "1"
name: rules-cortex-9f99md47tc
namespace: cortex-rules
apiVersion: v1
data:
tenantfoo.yaml: |-
groups:
- name: tenantfoo-system-metrics
rules:
- alert: HighCPUUsage
expr: avg(100 - rate(node_cpu_seconds_total{instance=~"qag1ge1l.+",mode="idle"}[5m]) * 100) by (instance) > 100
for: 3m
labels:
severity: warning
annotations:
description: Metrics from {{ $labels.job }} on {{ $labels.instance }} show CPU > 90% for 3m.
title: Node {{ $labels.instance }} has high CPU usage
```
{% endraw %}
Example ConfigMap containing an alertmanager-config:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
annotations:
k8s-sidecar-target-directory: /data/tenantfoo
labels:
cortex_alertmanager: "1"
name: alertmanager-example-config
data:
tenantfoo.yaml: |-
global:
resolve_timeout: 5m
http_config: {}
smtp_hello: localhost
smtp_require_tls: true
route:
receiver: team-X-mails
group_by:
- alertname
routes:
- receiver: "null"
match:
alertname: Watchdog
group_wait: 30s
group_interval: 5m
repeat_interval: 12h
receivers:
- name: 'team-X-mails'
email_configs:
- to: 'team-X+alerts@example.org'
```
================================================
FILE: docs/guides/getting_started_with_block_storage.markdown
================================================
---
layout: page
title: Getting started with block storage
parent: Guides
has_children: false
has_toc: false
nav_order: 1
---
# Getting started with block storage
{: .no_toc }
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
# Getting Started
A quick example configuration on how to get started with block storage can be found here
```yaml
# This file provides helm values to configure Cortex for blocks storage on AWS S3.
# Be sure to edit region, endpoint, and bucket_name for your environment.
config:
alertmanager_storage:
s3:
bucket_name: # your bucket name
region: us-east-1
endpoint: s3.us-east-1.amazonaws.com
blocks_storage:
backend: s3
s3:
bucket_name: # your bucket name
region: us-east-1
# -- The S3 bucket endpoint. It could be an AWS S3 endpoint listed at
# https://docs.aws.amazon.com/general/latest/gr/s3.html or the address of an
# S3-compatible service in hostname:port format.
endpoint: s3.us-east-1.amazonaws.com
bucket_store:
sync_dir: "/data"
tsdb:
dir: "/data"
querier:
# -- Comma separated list of store-gateway addresses in DNS Service Discovery
# format. This option should be set when using the blocks storage and the
# store-gateway sharding is disabled (when enabled, the store-gateway instances
# form a ring and addresses are picked from the ring).
store_gateway_addresses: dns+cortex-store-gateway-headless.cortex.svc:9095
ruler_storage:
s3:
bucket_name: # your bucket name
region: us-east-1
endpoint: s3.us-east-1.amazonaws.com
```
================================================
FILE: docs/guides/upgrade-v1.markdown
================================================
---
layout: page
title: Upgrading to chart version v1.0.0
parent: Guides
has_children: false
has_toc: false
---
# Upgrading to chart version v1.0.0
{: .no_toc }
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
# Upgrading to chart version v1.0.0
cortex-helm-chart v1.0.0 introduced a number of breaking changes in an attempt to provide better defaults for new users. Care should be taken when upgrading so that the new defaults are not inherited unexpectedly. Many of the new defaults are safe and simple to apply with an upgrade, but some require special procedures to migrate to, and some may not match your desired configuration.
This guide covers a few topics, but is not exhaustive. Please review the [release notes](https://github.com/cortexproject/cortex-helm-chart/releases/tag/v1.0.0) and [diff](https://github.com/cortexproject/cortex-helm-chart/compare/v0.6.0...v1.0.0) before upgrading to ensure you haven't missed anything important to your installation. You may want to use a tool like [helm-diff](https://github.com/databus23/helm-diff) to see what changes will be applied.
## Migrating to Memberlist
The default kvstore changed from `consul` to `memberlist`. Migrating from one kvstore to another requires either downtime or a multi-stage process.
### Downtime
If you are okay with downtime, the simplest way to migrate kvstores is to scale down all cortex components, then `helm upgrade --reset-values` to cortex-helm-chart v1.x.x to apply the new default kvstore, `memberlist`. Keep in mind this will apply all the new defaults, so ensure any values you would like to preserve that are unrelated to the kvstore are overridden with `-f` and your custom values file or `--set`.
### Multi KV
Cortex provides a configuration called Multi KV to migrate from one kvstore to another without downtime. Please read the doc on Multi KV before continuing this guide: https://cortexmetrics.io/docs/configuration/arguments/#multi-kv
Assuming you have an existing installation of cortex-helm-chart v0.6.0, here is an example of how to convert it to `memberlist`.
#### Stage 1 - mirror to both kvstores
_Be sure to augment this command with any other options you used for the initial installation._
```
helm upgrade cortex cortex-helm/cortex --version 0.6.0 -f kvstore-mirror.yaml
```
kvstore-mirror.yaml:
```yaml
config:
alertmanager:
sharding_ring:
kvstore: &kvstore
store: multi
multi:
primary: consul
secondary: memberlist
mirror_enabled: true
compactor:
sharding_ring:
kvstore: *kvstore
distributor:
ring:
kvstore: *kvstore
ingester:
lifecycler:
ring:
kvstore: *kvstore
store_gateway:
sharding_ring:
kvstore: *kvstore
```
#### Stage 2 - use runtime config to make memberlist the primary
_Be sure to augment this command with any other options you used for the initial installation._
```
helm upgrade cortex cortex-helm/cortex --version 0.6.0 -f kvstore-mirror.yaml -f kvstore-runtime.yaml
```
kvstore-runtime.yaml:
```yaml
runtimeconfigmap:
runtime_config:
multi_kv_config:
mirror_enabled: false
primary: memberlist
```
#### Stage 3 - disable consul
_Be sure to augment this command with any other options you used for the initial installation._
```
helm upgrade cortex cortex-helm/cortex --version 0.6.0 -f kvstore-memberlist.yaml
```
kvstore-memberlist.yaml:
```yaml
config:
alertmanager:
sharding_ring:
kvstore: &kvstore
store: memberlist
compactor:
sharding_ring:
kvstore: *kvstore
distributor:
ring:
kvstore: *kvstore
ingester:
lifecycler:
ring:
kvstore: *kvstore
store_gateway:
sharding_ring:
kvstore: *kvstore
```
## Migrate from chucks to block storage
https://cortexmetrics.io/docs/blocks-storage/migrate-cortex-cluster-from-chunks-to-blocks/
================================================
FILE: docs/guides.md
================================================
---
layout: page
title: Guides
nav_order: 2
has_children: true
has_toc: true
permalink: /docs/guides
---
# Guides
{: .no_toc }
Guides & Best-Practices on how to configure the cortex-helm-chart.
{: .fs-6 .fw-300 }
================================================
FILE: docs/index.markdown
================================================
---
layout: home
title: Home
nav_order: 1
description: "Horizontally scalable, highly available, multi-tenant, long term Prometheus."
permalink: /
---
# Welcome
<img src="https://cortexmetrics.io/images/cortex-horizontal.svg" alt="Cortex Logo"
style="display: block; margin-left: auto; magin-right: auto" />
This is the official cortex-helm-chart documentation. Here you can find Guides & Best-Practices on How-To setup cortex.
---
## About the project
Cortex is a horizontally scalable, highly available, multi-tenant, long term Prometheus. The cortex-helm-chart helps the operator with deploying cortex on a Kubernetes cluster.
Follow our socials:
* [Twitter](https://twitter.com/CortexMetrics)
Join us on Slack:
* [Slack](https://cloud-native.slack.com/?redir=%2Fmessages%2Fcortex%2F)
### License
cortex-helm-chart is distributed by an [Apache License 2.0](https://github.com/cortexproject/cortex-helm-chart/blob/master/LICENSE).
### Contributing
When contributing to this repository, please first discuss the change you wish to make via issue before making a change. Read more about becoming a contributor in [our GitHub repo](https://github.com/cortexproject/cortex-helm-chart/blob/master/CONTRIBUTING).
#### Thank you to the contributors of cortex-helm-chart!
<ul class="list-style-none">
{% for contributor in site.github.contributors %}
<li class="d-inline-block mr-1">
<a href="{{ contributor.html_url }}"><img src="{{ contributor.avatar_url }}" width="32" height="32" alt="{{ contributor.login }}"/></a>
</li>
{% endfor %}
</ul>
================================================
FILE: docs/index.yaml
================================================
apiVersion: v1
entries:
cortex:
- apiVersion: v2
appVersion: v1.21.0
created: "2026-05-21T01:14:12.921801856Z"
dependencies:
- alias: memcached-frontend
condition: memcached-frontend.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks-index
condition: memcached-blocks-index.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks
condition: memcached-blocks.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks-metadata
condition: memcached-blocks-metadata.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-parquet-labels
condition: memcached-parquet-labels.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
description: Horizontally scalable, highly available, multi-tenant, long term
Prometheus.
digest: d78913504745162e5c7165b17e19ec7b6da931865de191bcc9c7cac2804131d8
home: https://cortexmetrics.io/
icon: https://avatars2.githubusercontent.com/u/43045022?s=200&v=4
kubeVersion: ^1.19.0-0
maintainers:
- email: thayward@infoblox.com
name: Tom Hayward
url: https://github.com/kd7lxl
- email: niclas.schad@stackit.cloud
name: Niclas Schad
url: https://github.com/nschad
name: cortex
sources:
- https://github.com/cortexproject/cortex-helm-chart
urls:
- https://cortexproject.github.io/cortex-helm-chart/cortex-3.3.1.tgz
version: 3.3.1
- apiVersion: v2
appVersion: v1.21.0
created: "2026-05-21T01:14:12.914049046Z"
dependencies:
- alias: memcached-frontend
condition: memcached-frontend.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks-index
condition: memcached-blocks-index.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks
condition: memcached-blocks.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks-metadata
condition: memcached-blocks-metadata.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-parquet-labels
condition: memcached-parquet-labels.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
description: Horizontally scalable, highly available, multi-tenant, long term
Prometheus.
digest: 6c70fc5005db876972c133ff3219e581bd67e5d0f5ea83dc9f5f1a92b6916df4
home: https://cortexmetrics.io/
icon: https://avatars2.githubusercontent.com/u/43045022?s=200&v=4
kubeVersion: ^1.19.0-0
maintainers:
- email: thayward@infoblox.com
name: Tom Hayward
url: https://github.com/kd7lxl
- email: niclas.schad@stackit.cloud
name: Niclas Schad
url: https://github.com/nschad
name: cortex
sources:
- https://github.com/cortexproject/cortex-helm-chart
urls:
- https://cortexproject.github.io/cortex-helm-chart/cortex-3.3.0.tgz
version: 3.3.0
- apiVersion: v2
appVersion: v1.20.1
created: "2026-05-21T01:14:12.906110823Z"
dependencies:
- alias: memcached-frontend
condition: memcached-frontend.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks-index
condition: memcached-blocks-index.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks
condition: memcached-blocks.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks-metadata
condition: memcached-blocks-metadata.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
description: Horizontally scalable, highly available, multi-tenant, long term
Prometheus.
digest: a7486f58f7d9a18e99cf681575a0114e617b4e82be28c24acc843163f0ca7406
home: https://cortexmetrics.io/
icon: https://avatars2.githubusercontent.com/u/43045022?s=200&v=4
kubeVersion: ^1.19.0-0
maintainers:
- email: thayward@infoblox.com
name: Tom Hayward
url: https://github.com/kd7lxl
- email: niclas.schad@stackit.cloud
name: Niclas Schad
url: https://github.com/nschad
name: cortex
sources:
- https://github.com/cortexproject/cortex-helm-chart
urls:
- https://cortexproject.github.io/cortex-helm-chart/cortex-3.2.1.tgz
version: 3.2.1
- apiVersion: v2
appVersion: v1.20.1
created: "2026-05-21T01:14:12.898615686Z"
dependencies:
- alias: memcached-frontend
condition: memcached-frontend.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks-index
condition: memcached-blocks-index.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks
condition: memcached-blocks.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks-metadata
condition: memcached-blocks-metadata.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
description: Horizontally scalable, highly available, multi-tenant, long term
Prometheus.
digest: eb8f8c762478d5208fe12b23df18a18ec450a1ed93ed6112c3ebf9d235a5010d
home: https://cortexmetrics.io/
icon: https://avatars2.githubusercontent.com/u/43045022?s=200&v=4
kubeVersion: ^1.19.0-0
maintainers:
- email: thayward@infoblox.com
name: Tom Hayward
url: https://github.com/kd7lxl
- email: niclas.schad@stackit.cloud
name: Niclas Schad
url: https://github.com/nschad
name: cortex
sources:
- https://github.com/cortexproject/cortex-helm-chart
urls:
- https://cortexproject.github.io/cortex-helm-chart/cortex-3.2.0.tgz
version: 3.2.0
- apiVersion: v2
appVersion: v1.20.1
created: "2026-05-21T01:14:12.891236544Z"
dependencies:
- alias: memcached-frontend
condition: memcached-frontend.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks-index
condition: memcached-blocks-index.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks
condition: memcached-blocks.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks-metadata
condition: memcached-blocks-metadata.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
description: Horizontally scalable, highly available, multi-tenant, long term
Prometheus.
digest: e9361694cfc519a3a74a467d91ab603f3e48444f51e5174bb62ac061c76c976e
home: https://cortexmetrics.io/
icon: https://avatars2.githubusercontent.com/u/43045022?s=200&v=4
kubeVersion: ^1.19.0-0
maintainers:
- email: thayward@infoblox.com
name: Tom Hayward
url: https://github.com/kd7lxl
- email: niclas.schad@stackit.cloud
name: Niclas Schad
url: https://github.com/nschad
name: cortex
sources:
- https://github.com/cortexproject/cortex-helm-chart
urls:
- https://cortexproject.github.io/cortex-helm-chart/cortex-3.1.0.tgz
version: 3.1.0
- apiVersion: v2
appVersion: v1.20.0
created: "2026-05-21T01:14:12.884627897Z"
dependencies:
- alias: memcached-frontend
condition: memcached-frontend.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks-index
condition: memcached-blocks-index.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks
condition: memcached-blocks.enabled
name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.14.0
- alias: memcached-blocks-metadata
condi
gitextract_m7b_vaw8/ ├── .github/ │ ├── pull_request_template.md │ ├── stale.yml │ └── workflows/ │ ├── lint-test.yml │ ├── release.yaml │ └── renovate-config-validator.yml ├── .gitignore ├── .helmignore ├── .prettierignore ├── CHANGELOG.md ├── Chart.yaml ├── LICENSE ├── MAINTAINERS.md ├── Makefile ├── README.md ├── README.md.gotmpl ├── charts/ │ └── memcached-6.14.0.tgz ├── ci/ │ ├── test-configmap-values.yaml │ ├── test-deployment-values.yaml │ └── test-sts-values.yaml ├── ct.yaml ├── docs/ │ ├── .gitignore │ ├── 404.html │ ├── Gemfile │ ├── _config.yml │ ├── _layouts/ │ │ ├── home.html │ │ └── page.html │ ├── cortex-0.2.0.tgz │ ├── cortex-0.3.0.tgz │ ├── cortex-0.4.0.tgz │ ├── cortex-0.4.1.tgz │ ├── cortex-0.5.0.tgz │ ├── cortex-0.6.0.tgz │ ├── cortex-0.7.0.tgz │ ├── cortex-1.0.0.tgz │ ├── cortex-1.0.1.tgz │ ├── cortex-1.1.0.tgz │ ├── cortex-1.2.0.tgz │ ├── cortex-1.3.0.tgz │ ├── cortex-1.4.0.tgz │ ├── cortex-1.5.0.tgz │ ├── cortex-1.5.1.tgz │ ├── cortex-1.6.0.tgz │ ├── cortex-1.7.0.tgz │ ├── cortex-2.0.0.tgz │ ├── cortex-2.0.1.tgz │ ├── cortex-2.1.0.tgz │ ├── cortex-2.2.0.tgz │ ├── cortex-2.3.0.tgz │ ├── cortex-2.4.0.tgz │ ├── cortex-2.5.0.tgz │ ├── cortex-2.6.0.tgz │ ├── cortex-3.0.0.tgz │ ├── cortex-3.1.0.tgz │ ├── cortex-3.2.0.tgz │ ├── cortex-3.2.1.tgz │ ├── cortex-3.3.0.tgz │ ├── cortex-3.3.1.tgz │ ├── development/ │ │ └── developing_the_docs.md │ ├── development.md │ ├── guides/ │ │ ├── configure_configmap.markdown │ │ ├── configure_memberlist.markdown │ │ ├── configure_memcached.markdown │ │ ├── configure_ruler_and_alertmanager_with_configmap.markdown │ │ ├── configure_rules_via_configmap.markdown │ │ ├── configure_rules_via_sidecar.markdown │ │ ├── getting_started_with_block_storage.markdown │ │ └── upgrade-v1.markdown │ ├── guides.md │ ├── index.markdown │ └── index.yaml ├── renovate.json ├── templates/ │ ├── NOTES.txt │ ├── _helpers.tpl │ ├── alertmanager/ │ │ ├── _helpers-alertmanager.tpl │ │ ├── alertmanager-dep.yaml │ │ ├── alertmanager-poddisruptionbudget.yaml │ │ ├── alertmanager-servicemonitor.yaml │ │ ├── alertmanager-statefulset.yaml │ │ ├── alertmanager-svc-headless.yaml │ │ └── alertmanager-svc.yaml │ ├── clusterrole.yaml │ ├── clusterrolebinding.yaml │ ├── compactor/ │ │ ├── _helpers-compactor.tpl │ │ ├── compactor-poddisruptionbudget.yaml │ │ ├── compactor-servicemonitor.yaml │ │ ├── compactor-statefulset.yaml │ │ └── compactor-svc.yaml │ ├── configmap.yaml │ ├── distributor/ │ │ ├── _helpers-distributor.tpl │ │ ├── distributor-dep.yaml │ │ ├── distributor-hpa.yaml │ │ ├── distributor-poddisruptionbudget.yaml │ │ ├── distributor-servicemonitor.yaml │ │ ├── distributor-svc-headless.yaml │ │ └── distributor-svc.yaml │ ├── ingester/ │ │ ├── _helpers-ingester.tpl │ │ ├── ingester-dep.yaml │ │ ├── ingester-hpa.yaml │ │ ├── ingester-poddisruptionbudget.yaml │ │ ├── ingester-servicemonitor.yaml │ │ ├── ingester-statefulset.yaml │ │ ├── ingester-svc-headless.yaml │ │ └── ingester-svc.yaml │ ├── nginx/ │ │ ├── _helpers-nginx.tpl │ │ ├── nginx-config.yaml │ │ ├── nginx-dep.yaml │ │ ├── nginx-hpa.yaml │ │ ├── nginx-ingress.yaml │ │ ├── nginx-poddisruptionbudget.yaml │ │ └── nginx-svc.yaml │ ├── overrides-exporter/ │ │ ├── _helpers-overrides-exporter.tpl │ │ ├── overrides-exporter-dep.yaml │ │ ├── overrides-exporter-poddisruptionbudget.yaml │ │ ├── overrides-exporter-servicemonitor.yaml │ │ └── overrides-exporter-svc.yaml │ ├── parquet-converter/ │ │ ├── _helpers-parquet-converter.tpl │ │ ├── parquet-converter-dep.yaml │ │ ├── parquet-converter-servicemonitor.yaml │ │ └── parquet-converter-svc.yaml │ ├── purger/ │ │ ├── _helpers-purger.tpl │ │ ├── purger-dep.yaml │ │ ├── purger-servicemonitor.yaml │ │ ├── purger-svc-headless.yaml │ │ └── purger-svc.yaml │ ├── querier/ │ │ ├── _helpers-querier.tpl │ │ ├── querier-dep.yaml │ │ ├── querier-hpa.yaml │ │ ├── querier-poddisruptionbudget.yaml │ │ ├── querier-servicemonitor.yaml │ │ └── querier-svc.yaml │ ├── query-frontend/ │ │ ├── _helpers-query-frontend.tpl │ │ ├── query-frontend-dep.yaml │ │ ├── query-frontend-servicemonitor.yaml │ │ ├── query-frontend-svc-headless.yaml │ │ ├── query-frontend-svc.yaml │ │ └── query-poddisruptionbudget.yaml │ ├── query-scheduler/ │ │ ├── _helpers-query-scheduler.tpl │ │ ├── query-scheduler-dep.yaml │ │ ├── query-scheduler-poddisruptionbudget.yaml │ │ ├── query-scheduler-servicemonitor.yaml │ │ ├── query-scheduler-svc-headless.yaml │ │ └── query-scheduler-svc.yaml │ ├── ruler/ │ │ ├── _helpers-ruler.tpl │ │ ├── ruler-configmap.yaml │ │ ├── ruler-dep.yaml │ │ ├── ruler-hpa.yaml │ │ ├── ruler-poddisruptionbudget.yaml │ │ ├── ruler-servicemonitor.yaml │ │ └── ruler-svc.yaml │ ├── runtime-configmap.yaml │ ├── secret.yaml │ ├── serviceaccount.yaml │ ├── store-gateway/ │ │ ├── _helpers-store-gateway.tpl │ │ ├── store-gateway-hpa.yaml │ │ ├── store-gateway-poddisruptionbudget.yaml │ │ ├── store-gateway-servicemonitor.yaml │ │ ├── store-gateway-statefulset.yaml │ │ ├── store-gateway-svc-headless.yaml │ │ └── store-gateway-svc.yaml │ └── svc-memberlist-headless.yaml ├── tools/ │ ├── bump-version.sh │ └── chart-version-tag.sh └── values.yaml
Condensed preview — 163 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (484K chars).
[
{
"path": ".github/pull_request_template.md",
"chars": 438,
"preview": "<!-- Thanks for sending a pull request! Before submitting:\n\n1. Read our CONTRIBUTING.md guide\n2. Rebase your PR if it "
},
{
"path": ".github/stale.yml",
"chars": 751,
"preview": "# Days without any activity until an issue is labeled as stale\ndaysUntilStale: 60\n\n# Days after having the stale label t"
},
{
"path": ".github/workflows/lint-test.yml",
"chars": 2542,
"preview": "name: Lint and Test Charts\n\non:\n pull_request:\n\njobs:\n update-readme:\n # Only runs on PRs from the same repo (not f"
},
{
"path": ".github/workflows/release.yaml",
"chars": 2679,
"preview": "name: Release Chart\n\non:\n push:\n branches:\n - master\n workflow_dispatch:\n inputs:\n version:\n de"
},
{
"path": ".github/workflows/renovate-config-validator.yml",
"chars": 289,
"preview": "name: Validate renovate config\n\non:\n push:\n paths:\n - renovate.json\n\njobs:\n validate:\n name: validate\n r"
},
{
"path": ".gitignore",
"chars": 14,
"preview": "./*.tgz\ncortex"
},
{
"path": ".helmignore",
"chars": 243,
"preview": "# Git\n.git/\n.gitignore\n.github/\n\n# IDE\n.project\n.idea/\n*.tmproj\n\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n\n# Cortex ig"
},
{
"path": ".prettierignore",
"chars": 6,
"preview": "*.yaml"
},
{
"path": "CHANGELOG.md",
"chars": 18683,
"preview": "# Changelog\n\n## master / unreleased\n\n## 3.3.1 / 2026-05-21\n\n* [DEPENDENCY] update kiwigrid/k8s-sidecar docker tag to v2."
},
{
"path": "Chart.yaml",
"chars": 1398,
"preview": "apiVersion: v2\nversion: 3.3.1\nappVersion: v1.21.0\ndescription: 'Horizontally scalable, highly available, multi-tenant, l"
},
{
"path": "LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "MAINTAINERS.md",
"chars": 179,
"preview": "- Niclas Schad, STACKIT <niclas.schad@stackit.cloud> ([@nschad](https://github.com/nschad))\n- Tom Hayward, Infoblox <tha"
},
{
"path": "Makefile",
"chars": 198,
"preview": ".PHONY: README.md\nREADME.md:\n\tdocker run --rm --volume \"$(shell pwd):/helm-docs\" -u $(shell id -u) jnorwood/helm-docs:v1"
},
{
"path": "README.md",
"chars": 108039,
"preview": "<!-- README.md is a generated file. Make any changes in README.md.gotmpl or values.yaml. -->\n\n# cortex\n\n![Version: 3.3.1"
},
{
"path": "README.md.gotmpl",
"chars": 3134,
"preview": "<!-- README.md is a generated file. Make any changes in README.md.gotmpl or values.yaml. -->\n\n{{ template \"chart.header\""
},
{
"path": "ci/test-configmap-values.yaml",
"chars": 3248,
"preview": "ingress:\n enabled: true\n\nuseConfigMap: true\n\nconfig:\n ingester:\n lifecycler:\n join_after: 30s\n final_slee"
},
{
"path": "ci/test-deployment-values.yaml",
"chars": 3400,
"preview": "ingress:\n enabled: true\n\nconfig:\n ingester:\n lifecycler:\n join_after: 30s\n final_sleep: 30s\n tokens_"
},
{
"path": "ci/test-sts-values.yaml",
"chars": 3226,
"preview": "ingress:\n enabled: true\n\nconfig:\n ingester:\n lifecycler:\n join_after: 30s\n final_sleep: 30s\n tokens_"
},
{
"path": "ct.yaml",
"chars": 343,
"preview": "# See https://github.com/helm/chart-testing#configuration\nremote: origin\nvalidate-maintainers: false # ct requires the "
},
{
"path": "docs/.gitignore",
"chars": 56,
"preview": "_site\n.sass-cache\n.jekyll-cache\n.jekyll-metadata\nvendor\n"
},
{
"path": "docs/404.html",
"chars": 419,
"preview": "---\npermalink: /404.html\nlayout: default\n---\n\n<style type=\"text/css\" media=\"screen\">\n .container {\n margin: 10px aut"
},
{
"path": "docs/Gemfile",
"chars": 1154,
"preview": "source \"https://rubygems.org\"\n# Hello! This is where you manage which Jekyll version is used to run.\n# When you want to "
},
{
"path": "docs/_config.yml",
"chars": 582,
"preview": "title: cortex-helm-chart\nemail: cortex-team@googlegroups.com\ndescription: >-\n Cortex is a horizontally scalable, highly"
},
{
"path": "docs/_layouts/home.html",
"chars": 37,
"preview": "---\nlayout: default\n---\n{{ content }}"
},
{
"path": "docs/_layouts/page.html",
"chars": 37,
"preview": "---\nlayout: default\n---\n{{ content }}"
},
{
"path": "docs/development/developing_the_docs.md",
"chars": 956,
"preview": "---\nlayout: page\ntitle: Working with the cortex-helm-chart docs\nparent: Development\nhas_children: false\nhas_toc: false\n-"
},
{
"path": "docs/development.md",
"chars": 193,
"preview": "---\nlayout: page\ntitle: Development\nnav_order: 3\nhas_children: true\npermalink: /docs/development\n---\n# Development\n{: .n"
},
{
"path": "docs/guides/configure_configmap.markdown",
"chars": 814,
"preview": "---\nlayout: page\ntitle: Configuring Cortex with configmap\nparent: Guides\nhas_children: false\nhas_toc: false\n---\n# Config"
},
{
"path": "docs/guides/configure_memberlist.markdown",
"chars": 661,
"preview": "---\nlayout: page\ntitle: Configure memberlist\nparent: Guides\nhas_children: false\nhas_toc: false\n---\n# Configure memberlis"
},
{
"path": "docs/guides/configure_memcached.markdown",
"chars": 1493,
"preview": "---\nlayout: page\ntitle: Configure memcached\nparent: Guides\nhas_children: false\nhas_toc: false\n---\n# Configuring memcache"
},
{
"path": "docs/guides/configure_ruler_and_alertmanager_with_configmap.markdown",
"chars": 6928,
"preview": "---\nlayout: page\ntitle: Configure Ruler and Alertmanager with configmap\nparent: Guides\nhas_children: false\nhas_toc: fals"
},
{
"path": "docs/guides/configure_rules_via_configmap.markdown",
"chars": 903,
"preview": "---\nlayout: page\ntitle: Configure rules via configmap\nparent: Guides\nhas_children: false\nhas_toc: false\n---\n# Configure "
},
{
"path": "docs/guides/configure_rules_via_sidecar.markdown",
"chars": 4556,
"preview": "---\nlayout: page\ntitle: Configure rules via sidecar\nparent: Guides\nhas_children: false\nhas_toc: false\n---\n# Configure ru"
},
{
"path": "docs/guides/getting_started_with_block_storage.markdown",
"chars": 1621,
"preview": "---\nlayout: page\ntitle: Getting started with block storage\nparent: Guides\nhas_children: false\nhas_toc: false\nnav_order: "
},
{
"path": "docs/guides/upgrade-v1.markdown",
"chars": 3905,
"preview": "---\nlayout: page\ntitle: Upgrading to chart version v1.0.0\nparent: Guides\nhas_children: false\nhas_toc: false\n---\n# Upgrad"
},
{
"path": "docs/guides.md",
"chars": 213,
"preview": "---\nlayout: page\ntitle: Guides\nnav_order: 2\nhas_children: true\nhas_toc: true\npermalink: /docs/guides\n---\n# Guides\n{: .no"
},
{
"path": "docs/index.markdown",
"chars": 1563,
"preview": "---\nlayout: home\ntitle: Home\nnav_order: 1\ndescription: \"Horizontally scalable, highly available, multi-tenant, long term"
},
{
"path": "docs/index.yaml",
"chars": 54608,
"preview": "apiVersion: v1\nentries:\n cortex:\n - apiVersion: v2\n appVersion: v1.21.0\n created: \"2026-05-21T01:14:12.921801856"
},
{
"path": "renovate.json",
"chars": 2507,
"preview": "{\n \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n \"extends\": [\n \"config:base\",\n \":"
},
{
"path": "templates/NOTES.txt",
"chars": 619,
"preview": "{{- include \"cortex.validateMemcached\" (index .Values \"memcached-frontend\") }}\n{{- include \"cortex.validateMemcached\" (i"
},
{
"path": "templates/_helpers.tpl",
"chars": 6075,
"preview": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"cortex.name\" -}}\n{{- default ."
},
{
"path": "templates/alertmanager/_helpers-alertmanager.tpl",
"chars": 486,
"preview": "\n{{/*\nalertmanager fullname\n*/}}\n{{- define \"cortex.alertmanagerFullname\" -}}\n{{ include \"cortex.fullname\" . }}-alertman"
},
{
"path": "templates/alertmanager/alertmanager-dep.yaml",
"chars": 8102,
"preview": "{{- if .Values.alertmanager.enabled -}}\n{{- if not .Values.alertmanager.statefulSet.enabled -}}\napiVersion: apps/v1\nkind"
},
{
"path": "templates/alertmanager/alertmanager-poddisruptionbudget.yaml",
"chars": 533,
"preview": "{{- if and (gt (int .Values.alertmanager.replicas) 1) (.Values.alertmanager.podDisruptionBudget) }}\napiVersion: {{ inclu"
},
{
"path": "templates/alertmanager/alertmanager-servicemonitor.yaml",
"chars": 1797,
"preview": "{{- if .Values.alertmanager.serviceMonitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata"
},
{
"path": "templates/alertmanager/alertmanager-statefulset.yaml",
"chars": 10523,
"preview": "{{- $svcClusterAddress := ((.Values.config.alertmanager.cluster).listen_address) | default \"0.0.0.0:9094\" }}\n{{- $svcClu"
},
{
"path": "templates/alertmanager/alertmanager-svc-headless.yaml",
"chars": 1053,
"preview": "{{- if .Values.alertmanager.enabled -}}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.alertmanagerFu"
},
{
"path": "templates/alertmanager/alertmanager-svc.yaml",
"chars": 686,
"preview": "{{- if .Values.alertmanager.enabled -}}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.alertmanagerFu"
},
{
"path": "templates/clusterrole.yaml",
"chars": 410,
"preview": "{{- if or .Values.ruler.sidecar.enabled .Values.alertmanager.sidecar.enabled }}\napiVersion: rbac.authorization.k8s.io/v1"
},
{
"path": "templates/clusterrolebinding.yaml",
"chars": 538,
"preview": "{{- if or .Values.ruler.sidecar.enabled .Values.alertmanager.sidecar.enabled }}\napiVersion: rbac.authorization.k8s.io/v1"
},
{
"path": "templates/compactor/_helpers-compactor.tpl",
"chars": 459,
"preview": "\n{{/*\ncompactor fullname\n*/}}\n{{- define \"cortex.compactorFullname\" -}}\n{{ include \"cortex.fullname\" . }}-compactor\n{{- "
},
{
"path": "templates/compactor/compactor-poddisruptionbudget.yaml",
"chars": 515,
"preview": "{{- if and (gt (int .Values.compactor.replicas) 1) (.Values.compactor.podDisruptionBudget) }}\napiVersion: {{ include \"co"
},
{
"path": "templates/compactor/compactor-servicemonitor.yaml",
"chars": 1740,
"preview": "{{- if .Values.compactor.serviceMonitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n "
},
{
"path": "templates/compactor/compactor-statefulset.yaml",
"chars": 6197,
"preview": "{{- if .Values.compactor.enabled -}}\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n name: {{ include \"cortex.compacto"
},
{
"path": "templates/compactor/compactor-svc.yaml",
"chars": 668,
"preview": "{{- if .Values.compactor.enabled -}}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.compactorFullname"
},
{
"path": "templates/configmap.yaml",
"chars": 346,
"preview": "{{- if (and (not .Values.useExternalConfig) (.Values.useConfigMap)) }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n name: "
},
{
"path": "templates/distributor/_helpers-distributor.tpl",
"chars": 477,
"preview": "\n{{/*\ndistributor fullname\n*/}}\n{{- define \"cortex.distributorFullname\" -}}\n{{ include \"cortex.fullname\" . }}-distributo"
},
{
"path": "templates/distributor/distributor-dep.yaml",
"chars": 5062,
"preview": "{{- if .Values.distributor.enabled -}}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"cortex.distrib"
},
{
"path": "templates/distributor/distributor-hpa.yaml",
"chars": 1154,
"preview": "{{- if and .Values.distributor.enabled .Values.distributor.autoscaling.enabled }}\n{{- with .Values.distributor.autoscali"
},
{
"path": "templates/distributor/distributor-poddisruptionbudget.yaml",
"chars": 557,
"preview": "{{- if and (gt (int .Values.distributor.replicas) 1) (.Values.distributor.podDisruptionBudget) (.Values.distributor.enab"
},
{
"path": "templates/distributor/distributor-servicemonitor.yaml",
"chars": 1810,
"preview": "{{- if and .Values.distributor.serviceMonitor.enabled .Values.distributor.enabled }}\napiVersion: monitoring.coreos.com/v"
},
{
"path": "templates/distributor/distributor-svc-headless.yaml",
"chars": 722,
"preview": "{{- if .Values.distributor.enabled -}}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.distributorFull"
},
{
"path": "templates/distributor/distributor-svc.yaml",
"chars": 678,
"preview": "{{- if .Values.distributor.enabled -}}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.distributorFull"
},
{
"path": "templates/ingester/_helpers-ingester.tpl",
"chars": 450,
"preview": "\n{{/*\ningester fullname\n*/}}\n{{- define \"cortex.ingesterFullname\" -}}\n{{ include \"cortex.fullname\" . }}-ingester\n{{- end"
},
{
"path": "templates/ingester/ingester-dep.yaml",
"chars": 5225,
"preview": "{{- if and (not .Values.ingester.statefulSet.enabled) .Values.ingester.enabled -}}\napiVersion: apps/v1\nkind: Deployment\n"
},
{
"path": "templates/ingester/ingester-hpa.yaml",
"chars": 988,
"preview": "{{- if and .Values.ingester.enabled .Values.ingester.autoscaling.enabled -}}\n{{- with .Values.ingester.autoscaling -}}\na"
},
{
"path": "templates/ingester/ingester-poddisruptionbudget.yaml",
"chars": 536,
"preview": "{{- if and (gt (int .Values.ingester.replicas) 1) (.Values.ingester.podDisruptionBudget) (.Values.ingester.enabled) }}\na"
},
{
"path": "templates/ingester/ingester-servicemonitor.yaml",
"chars": 1750,
"preview": "{{- if and .Values.ingester.serviceMonitor.enabled .Values.ingester.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind"
},
{
"path": "templates/ingester/ingester-statefulset.yaml",
"chars": 6579,
"preview": "{{- if and .Values.ingester.statefulSet.enabled .Values.ingester.enabled -}}\napiVersion: apps/v1\nkind: StatefulSet\nmetad"
},
{
"path": "templates/ingester/ingester-svc-headless.yaml",
"chars": 671,
"preview": "{{- if .Values.ingester.enabled -}}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.ingesterFullname\" "
},
{
"path": "templates/ingester/ingester-svc.yaml",
"chars": 660,
"preview": "{{- if .Values.ingester.enabled -}}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.ingesterFullname\" "
},
{
"path": "templates/nginx/_helpers-nginx.tpl",
"chars": 423,
"preview": "\n{{/*\nnginx fullname\n*/}}\n{{- define \"cortex.nginxFullname\" -}}\n{{ include \"cortex.fullname\" . }}-nginx\n{{- end }}\n\n{{/*"
},
{
"path": "templates/nginx/nginx-config.yaml",
"chars": 6790,
"preview": "{{- if .Values.nginx.enabled }}\n{{- $rootDomain := printf \"%s.svc.%s:%d\" .Release.Namespace .Values.clusterDomain (.Valu"
},
{
"path": "templates/nginx/nginx-dep.yaml",
"chars": 4417,
"preview": "{{- if .Values.nginx.enabled }}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"cortex.nginxFullname\""
},
{
"path": "templates/nginx/nginx-hpa.yaml",
"chars": 1118,
"preview": "{{- if and .Values.nginx.enabled .Values.nginx.autoscaling.enabled }}\n{{- with .Values.nginx.autoscaling -}}\napiVersion:"
},
{
"path": "templates/nginx/nginx-ingress.yaml",
"chars": 1140,
"preview": "{{- if and .Values.ingress.enabled .Values.nginx.enabled -}}\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n "
},
{
"path": "templates/nginx/nginx-poddisruptionbudget.yaml",
"chars": 515,
"preview": "{{- if and (.Values.nginx.enabled) (gt (int .Values.nginx.replicas) 1) (.Values.nginx.podDisruptionBudget) }}\napiVersion"
},
{
"path": "templates/nginx/nginx-svc.yaml",
"chars": 694,
"preview": "{{- if .Values.nginx.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.nginxFullname\" . }}\n "
},
{
"path": "templates/overrides-exporter/_helpers-overrides-exporter.tpl",
"chars": 537,
"preview": "\n{{/*\noverrides-exporter fullname\n*/}}\n{{- define \"cortex.overridesExporterFullname\" -}}\n{{ include \"cortex.fullname\" . "
},
{
"path": "templates/overrides-exporter/overrides-exporter-dep.yaml",
"chars": 4860,
"preview": "{{- if .Values.overrides_exporter.enabled }}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"cortex.o"
},
{
"path": "templates/overrides-exporter/overrides-exporter-poddisruptionbudget.yaml",
"chars": 603,
"preview": "{{- if and (gt (int .Values.overrides_exporter.replicas) 1) (.Values.overrides_exporter.podDisruptionBudget) (.Values.ov"
},
{
"path": "templates/overrides-exporter/overrides-exporter-servicemonitor.yaml",
"chars": 1947,
"preview": "{{- if and .Values.overrides_exporter.enabled .Values.overrides_exporter.serviceMonitor.enabled }}\napiVersion: monitorin"
},
{
"path": "templates/overrides-exporter/overrides-exporter-svc.yaml",
"chars": 717,
"preview": "{{- if .Values.overrides_exporter.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.overrides"
},
{
"path": "templates/parquet-converter/_helpers-parquet-converter.tpl",
"chars": 528,
"preview": "\n{{/*\nparquet-converter fullname\n*/}}\n{{- define \"cortex.parquetConverterFullname\" -}}\n{{ include \"cortex.fullname\" . }}"
},
{
"path": "templates/parquet-converter/parquet-converter-dep.yaml",
"chars": 4821,
"preview": "{{- if .Values.parquet_converter.enabled }}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"cortex.pa"
},
{
"path": "templates/parquet-converter/parquet-converter-servicemonitor.yaml",
"chars": 1937,
"preview": "{{- if and .Values.parquet_converter.enabled .Values.parquet_converter.serviceMonitor.enabled }}\napiVersion: monitoring."
},
{
"path": "templates/parquet-converter/parquet-converter-svc.yaml",
"chars": 711,
"preview": "{{- if .Values.parquet_converter.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.parquetCon"
},
{
"path": "templates/purger/_helpers-purger.tpl",
"chars": 432,
"preview": "\n{{/*\npurger fullname\n*/}}\n{{- define \"cortex.purgerFullname\" -}}\n{{ include \"cortex.fullname\" . }}-purger\n{{- end }}\n\n{"
},
{
"path": "templates/purger/purger-dep.yaml",
"chars": 4276,
"preview": "{{- if .Values.purger.enabled }}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"cortex.purgerFullnam"
},
{
"path": "templates/purger/purger-servicemonitor.yaml",
"chars": 1683,
"preview": "{{- if .Values.purger.serviceMonitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n na"
},
{
"path": "templates/purger/purger-svc-headless.yaml",
"chars": 692,
"preview": "{{- if .Values.purger.enabled -}}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.purgerFullname\" . }}"
},
{
"path": "templates/purger/purger-svc.yaml",
"chars": 650,
"preview": "{{- if .Values.purger.enabled -}}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.purgerFullname\" . }}"
},
{
"path": "templates/querier/_helpers-querier.tpl",
"chars": 441,
"preview": "\n{{/*\nquerier fullname\n*/}}\n{{- define \"cortex.querierFullname\" -}}\n{{ include \"cortex.fullname\" . }}-querier\n{{- end }}"
},
{
"path": "templates/querier/querier-dep.yaml",
"chars": 5215,
"preview": "{{- if .Values.querier.enabled -}}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"cortex.querierFull"
},
{
"path": "templates/querier/querier-hpa.yaml",
"chars": 1131,
"preview": "{{- if and .Values.querier.enabled .Values.querier.autoscaling.enabled -}}\n{{- with .Values.querier.autoscaling -}}\napiV"
},
{
"path": "templates/querier/querier-poddisruptionbudget.yaml",
"chars": 529,
"preview": "{{- if and (gt (int .Values.querier.replicas) 1) (.Values.querier.podDisruptionBudget) (.Values.querier.enabled) }}\napiV"
},
{
"path": "templates/querier/querier-servicemonitor.yaml",
"chars": 1730,
"preview": "{{- if and .Values.querier.serviceMonitor.enabled .Values.querier.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: "
},
{
"path": "templates/querier/querier-svc.yaml",
"chars": 655,
"preview": "{{- if .Values.querier.enabled -}}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.querierFullname\" . "
},
{
"path": "templates/query-frontend/_helpers-query-frontend.tpl",
"chars": 501,
"preview": "\n{{/*\nquery-frontend fullname\n*/}}\n{{- define \"cortex.queryFrontendFullname\" -}}\n{{ include \"cortex.fullname\" . }}-query"
},
{
"path": "templates/query-frontend/query-frontend-dep.yaml",
"chars": 5063,
"preview": "{{- if .Values.query_frontend.enabled -}}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"cortex.quer"
},
{
"path": "templates/query-frontend/query-frontend-servicemonitor.yaml",
"chars": 1867,
"preview": "{{- if and .Values.query_frontend.serviceMonitor.enabled .Values.query_frontend.enabled }}\napiVersion: monitoring.coreos"
},
{
"path": "templates/query-frontend/query-frontend-svc-headless.yaml",
"chars": 738,
"preview": "{{- if .Values.query_frontend.enabled -}}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.queryFronten"
},
{
"path": "templates/query-frontend/query-frontend-svc.yaml",
"chars": 812,
"preview": "{{- if .Values.query_frontend.enabled -}}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.queryFronten"
},
{
"path": "templates/query-frontend/query-poddisruptionbudget.yaml",
"chars": 575,
"preview": "{{- if and (gt (int .Values.query_frontend.replicas) 1) (.Values.query_frontend.podDisruptionBudget) (.Values.query_fron"
},
{
"path": "templates/query-scheduler/_helpers-query-scheduler.tpl",
"chars": 510,
"preview": "\n{{/*\nquery-scheduler fullname\n*/}}\n{{- define \"cortex.querySchedulerFullname\" -}}\n{{ include \"cortex.fullname\" . }}-que"
},
{
"path": "templates/query-scheduler/query-scheduler-dep.yaml",
"chars": 4701,
"preview": "{{- if .Values.query_scheduler.enabled }}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: {{ include \"cortex.quer"
},
{
"path": "templates/query-scheduler/query-scheduler-poddisruptionbudget.yaml",
"chars": 582,
"preview": "{{- if and (.Values.query_scheduler.enabled) (gt (int .Values.query_scheduler.replicas) 1) (.Values.query_scheduler.podD"
},
{
"path": "templates/query-scheduler/query-scheduler-servicemonitor.yaml",
"chars": 1887,
"preview": "{{- if and .Values.query_scheduler.enabled .Values.query_scheduler.serviceMonitor.enabled }}\napiVersion: monitoring.core"
},
{
"path": "templates/query-scheduler/query-scheduler-svc-headless.yaml",
"chars": 743,
"preview": "{{- if .Values.query_scheduler.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.querySchedul"
},
{
"path": "templates/query-scheduler/query-scheduler-svc.yaml",
"chars": 699,
"preview": "{{- if .Values.query_scheduler.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.querySchedul"
},
{
"path": "templates/ruler/_helpers-ruler.tpl",
"chars": 1203,
"preview": "\n{{/*\nruler fullname\n*/}}\n{{- define \"cortex.rulerFullname\" -}}\n{{ include \"cortex.fullname\" . }}-ruler\n{{- end }}\n\n{{/*"
},
{
"path": "templates/ruler/ruler-configmap.yaml",
"chars": 390,
"preview": "{{- if .Values.ruler.enabled }}\n{{- range $dir, $files := .Values.ruler.directories }}\n---\napiVersion: v1\nkind: ConfigMa"
},
{
"path": "templates/ruler/ruler-dep.yaml",
"chars": 9146,
"preview": "{{- if .Values.ruler.enabled -}}\n{{- include \"cortex.rulerValidation\" $ -}}\napiVersion: apps/v1\nkind: Deployment\nmetadat"
},
{
"path": "templates/ruler/ruler-hpa.yaml",
"chars": 1118,
"preview": "{{- if and .Values.ruler.enabled .Values.ruler.autoscaling.enabled }}\n{{- with .Values.ruler.autoscaling -}}\napiVersion:"
},
{
"path": "templates/ruler/ruler-poddisruptionbudget.yaml",
"chars": 491,
"preview": "{{- if and (gt (int .Values.ruler.replicas) 1) (.Values.ruler.podDisruptionBudget) }}\napiVersion: {{ include \"cortex.pdb"
},
{
"path": "templates/ruler/ruler-servicemonitor.yaml",
"chars": 1664,
"preview": "{{- if .Values.ruler.serviceMonitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n nam"
},
{
"path": "templates/ruler/ruler-svc.yaml",
"chars": 643,
"preview": "{{- if .Values.ruler.enabled -}}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.rulerFullname\" . }}\n "
},
{
"path": "templates/runtime-configmap.yaml",
"chars": 446,
"preview": "{{- with .Values.runtimeconfigmap }}\n{{- if .create }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n name: {{ template \"cor"
},
{
"path": "templates/secret.yaml",
"chars": 330,
"preview": "{{- if (and (not .Values.useExternalConfig) (not .Values.useConfigMap)) }}\napiVersion: v1\nkind: Secret\nmetadata:\n name:"
},
{
"path": "templates/serviceaccount.yaml",
"chars": 415,
"preview": "{{- if .Values.serviceAccount.create }}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n name: {{ template \"cortex.servic"
},
{
"path": "templates/store-gateway/_helpers-store-gateway.tpl",
"chars": 492,
"preview": "\n{{/*\nstore-gateway fullname\n*/}}\n{{- define \"cortex.storeGatewayFullname\" -}}\n{{ include \"cortex.fullname\" . }}-store-g"
},
{
"path": "templates/store-gateway/store-gateway-hpa.yaml",
"chars": 940,
"preview": "{{- if and .Values.store_gateway.enabled .Values.store_gateway.autoscaling.enabled -}}\n{{- with .Values.store_gateway.au"
},
{
"path": "templates/store-gateway/store-gateway-poddisruptionbudget.yaml",
"chars": 568,
"preview": "{{- if and (gt (int .Values.store_gateway.replicas) 1) (.Values.store_gateway.podDisruptionBudget) (.Values.store_gatewa"
},
{
"path": "templates/store-gateway/store-gateway-servicemonitor.yaml",
"chars": 1847,
"preview": "{{- if and .Values.store_gateway.serviceMonitor.enabled .Values.store_gateway.enabled }}\napiVersion: monitoring.coreos.c"
},
{
"path": "templates/store-gateway/store-gateway-statefulset.yaml",
"chars": 6620,
"preview": "{{- if .Values.store_gateway.enabled -}}\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n name: {{ include \"cortex.stor"
},
{
"path": "templates/store-gateway/store-gateway-svc-headless.yaml",
"chars": 700,
"preview": "{{- if .Values.store_gateway.enabled -}}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.storeGatewayF"
},
{
"path": "templates/store-gateway/store-gateway-svc.yaml",
"chars": 689,
"preview": "{{- if .Values.store_gateway.enabled -}}\napiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.storeGatewayF"
},
{
"path": "templates/svc-memberlist-headless.yaml",
"chars": 673,
"preview": "apiVersion: v1\nkind: Service\nmetadata:\n name: {{ include \"cortex.fullname\" . }}-memberlist\n namespace: {{ .Release.Nam"
},
{
"path": "tools/bump-version.sh",
"chars": 1783,
"preview": "#!/usr/bin/env bash\nset -euo pipefail\n\nVERSION=\"${1:-}\"\n\ncurrent_version=$(grep '^version:' Chart.yaml | awk '{print $2}"
},
{
"path": "tools/chart-version-tag.sh",
"chars": 476,
"preview": "#!/usr/bin/env bash\n\nset -o nounset\nset -o pipefail\n\nRELEASE_TAG=$(git describe --tags --exact-match 2>/dev/null)\nset -o"
},
{
"path": "values.yaml",
"chars": 51063,
"preview": "image:\n repository: quay.io/cortexproject/cortex\n # -- Allows you to override the cortex version in this chart. Use at"
}
]
// ... and 32 more files (download for full content)
About this extraction
This page contains the full source code of the cortexproject/cortex-helm-chart GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 163 files (450.2 KB), approximately 125.1k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.