Repository: prometheus-operator/kube-prometheus Branch: main Commit: 023757831a04 Files: 320 Total size: 6.1 MB Directory structure: gitextract_4x2izfw2/ ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug.md │ │ ├── feature.md │ │ └── support.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ ├── env │ └── workflows/ │ ├── action-lint.yaml │ ├── ci.yaml │ ├── stale.yaml │ └── versions.yaml ├── .gitignore ├── .gitpod.yml ├── .mdox.validate.yaml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── README.md ├── RELEASE.md ├── build.sh ├── code-of-conduct.md ├── developer-workspace/ │ ├── README.md │ ├── codespaces/ │ │ └── prepare-kind.sh │ ├── common/ │ │ └── deploy-kube-prometheus.sh │ └── gitpod/ │ ├── prepare-k3s.sh │ ├── prepare-rootfs.sh │ ├── qemu.sh │ ├── scp.sh │ └── ssh.sh ├── docs/ │ ├── EKS-cni-support.md │ ├── GKE-cadvisor-support.md │ ├── access-ui.md │ ├── blackbox-exporter.md │ ├── community-support.md │ ├── customizations/ │ │ ├── alertmanager-configuration.md │ │ ├── components-name-namespace-overrides.md │ │ ├── developing-prometheus-rules-and-grafana-dashboards.md │ │ ├── dropping-unwanted-dashboards.md │ │ ├── exposing-prometheus-alertmanager-grafana-ingress.md │ │ ├── monitoring-additional-namespaces.md │ │ ├── monitoring-all-namespaces.md │ │ ├── node-ports.md │ │ ├── platform-specific.md │ │ ├── pod-anti-affinity.md │ │ ├── prometheus-agent.md │ │ ├── static-etcd-configuration.md │ │ ├── strip-limits.md │ │ └── using-custom-container-registry.md │ ├── customizing.md │ ├── deploy-kind.md │ ├── endpoints-migration.md │ ├── kube-prometheus-on-kubeadm.md │ ├── migration-example/ │ │ ├── my.release-0.3.jsonnet │ │ ├── my.release-0.8.jsonnet │ │ └── readme.md │ ├── migration-guide.md │ ├── monitoring-external-etcd.md │ ├── monitoring-other-namespaces.md │ ├── security.md │ ├── troubleshooting.md │ ├── update.md │ ├── weave-net-support.md │ └── windows.md ├── example.jsonnet ├── examples/ │ ├── additional-namespaces-servicemonitor.jsonnet │ ├── additional-namespaces.jsonnet │ ├── alertmanager-alert-template.tmpl │ ├── alertmanager-config-external.jsonnet │ ├── alertmanager-config-template-external.jsonnet │ ├── alertmanager-config-with-template.yaml │ ├── alertmanager-config.jsonnet │ ├── alertmanager-config.yaml │ ├── all-namespaces.jsonnet │ ├── anti-affinity.jsonnet │ ├── auth │ ├── basic-auth/ │ │ ├── secrets.yaml │ │ └── service-monitor.yaml │ ├── changing-default-rules.libsonnet │ ├── continuous-delivery/ │ │ └── argocd/ │ │ ├── README.md │ │ ├── application.yaml │ │ ├── appproject.yaml │ │ └── kube-prometheus/ │ │ └── argocd-basic.jsonnet │ ├── drop-dashboards.jsonnet │ ├── eks-cni-example.jsonnet │ ├── etcd-client-ca.crt │ ├── etcd-client.crt │ ├── etcd-client.key │ ├── etcd-skip-verify.jsonnet │ ├── etcd.jsonnet │ ├── example-app/ │ │ ├── example-app.yaml │ │ ├── prometheus-frontend-alertmanager-discovery-role-binding.yaml │ │ ├── prometheus-frontend-alertmanager-discovery-role.yaml │ │ ├── prometheus-frontend-role-binding.yaml │ │ ├── prometheus-frontend-role.yaml │ │ ├── prometheus-frontend-service-account.yaml │ │ ├── prometheus-frontend-svc.yaml │ │ ├── prometheus-frontend.yaml │ │ └── servicemonitor-frontend.yaml │ ├── example-grafana-dashboard.json │ ├── existingrule.json │ ├── existingrule.yaml │ ├── grafana-additional-jsonnet-dashboard-example.jsonnet │ ├── grafana-additional-rendered-dashboard-example-2.jsonnet │ ├── grafana-additional-rendered-dashboard-example.jsonnet │ ├── grafana-ldap.jsonnet │ ├── grafana-only-dashboards.jsonnet │ ├── ingress-one-to-many.jsonnet │ ├── ingress.jsonnet │ ├── internal-registry.jsonnet │ ├── jsonnet-build-snippet/ │ │ └── build-snippet.jsonnet │ ├── jsonnet-snippets/ │ │ ├── node-ports.jsonnet │ │ └── platform.jsonnet │ ├── kubeProxy.jsonnet │ ├── kustomize.jsonnet │ ├── minikube.jsonnet │ ├── mixin-inclusion.jsonnet │ ├── name-namespace-overrides.jsonnet │ ├── networkpolicies-disabled.jsonnet │ ├── pod-security-policies.jsonnet │ ├── prometheus-additional-alert-rule-example.jsonnet │ ├── prometheus-additional-recording-rule-example.jsonnet │ ├── prometheus-additional-rendered-rule-example.jsonnet │ ├── prometheus-agent.jsonnet │ ├── prometheus-pvc.jsonnet │ ├── prometheus-thanos.jsonnet │ ├── rule-patcher.jsonnet │ ├── rule-patches.libsonnet │ ├── strip-limits.jsonnet │ ├── sync-to-internal-registry.jsonnet │ ├── thanos-sidecar.jsonnet │ ├── tolerations.libsonnet │ ├── weave-net-example.jsonnet │ ├── windows-hostprocess.jsonnet │ └── windows.jsonnet ├── experimental/ │ └── metrics-server/ │ ├── auth-delegator.yaml │ ├── auth-reader.yaml │ ├── metrics-apiservice.yaml │ ├── metrics-server-cluster-role-binding.yaml │ ├── metrics-server-cluster-role.yaml │ ├── metrics-server-deployment.yaml │ ├── metrics-server-service-account.yaml │ └── metrics-server-service.yaml ├── go.mod ├── go.sum ├── jsonnet/ │ └── kube-prometheus/ │ ├── .gitignore │ ├── addons/ │ │ ├── all-namespaces.libsonnet │ │ ├── anti-affinity.libsonnet │ │ ├── aws-vpc-cni.libsonnet │ │ ├── config-mixins.libsonnet │ │ ├── custom-metrics.libsonnet │ │ ├── dropping-deprecated-metrics-relabelings.libsonnet │ │ ├── external-metrics.libsonnet │ │ ├── insecure-kubelet.libsonnet │ │ ├── ksm-autoscaler.libsonnet │ │ ├── ksm-lite.libsonnet │ │ ├── managed-cluster.libsonnet │ │ ├── networkpolicies-disabled.libsonnet │ │ ├── node-ports.libsonnet │ │ ├── podsecuritypolicies.libsonnet │ │ ├── pyrra.libsonnet │ │ ├── static-etcd.libsonnet │ │ ├── strip-limits.libsonnet │ │ ├── user-facing-roles.libsonnet │ │ ├── weave-net/ │ │ │ ├── alerts.libsonnet │ │ │ ├── grafana-weave-net-cluster.json │ │ │ ├── grafana-weave-net.json │ │ │ └── weave-net.libsonnet │ │ ├── windows-hostprocess.libsonnet │ │ └── windows.libsonnet │ ├── components/ │ │ ├── alertmanager.libsonnet │ │ ├── blackbox-exporter.libsonnet │ │ ├── grafana.libsonnet │ │ ├── k8s-control-plane.libsonnet │ │ ├── kube-rbac-proxy.libsonnet │ │ ├── kube-state-metrics.libsonnet │ │ ├── mixin/ │ │ │ ├── alerts/ │ │ │ │ ├── alerts.libsonnet │ │ │ │ ├── general.libsonnet │ │ │ │ └── node.libsonnet │ │ │ ├── custom.libsonnet │ │ │ └── rules/ │ │ │ ├── general.libsonnet │ │ │ ├── node-rules.libsonnet │ │ │ └── rules.libsonnet │ │ ├── node-exporter.libsonnet │ │ ├── prometheus-adapter.libsonnet │ │ ├── prometheus-operator.libsonnet │ │ └── prometheus.libsonnet │ ├── jsonnetfile.json │ ├── lib/ │ │ ├── mixin.libsonnet │ │ ├── rule-sanitizer.libsonnet │ │ └── utils.libsonnet │ ├── main.libsonnet │ ├── platforms/ │ │ ├── README.md │ │ ├── aks.libsonnet │ │ ├── aws.libsonnet │ │ ├── bootkube.libsonnet │ │ ├── eks.libsonnet │ │ ├── gke.libsonnet │ │ ├── kops-coredns.libsonnet │ │ ├── kops.libsonnet │ │ ├── kubeadm.libsonnet │ │ ├── kubespray.libsonnet │ │ └── platforms.libsonnet │ └── versions.json ├── jsonnetfile.json ├── jsonnetfile.lock.json ├── kubescape-exceptions.json ├── kustomization.yaml ├── manifests/ │ ├── alertmanager-alertmanager.yaml │ ├── alertmanager-networkPolicy.yaml │ ├── alertmanager-podDisruptionBudget.yaml │ ├── alertmanager-prometheusRule.yaml │ ├── alertmanager-secret.yaml │ ├── alertmanager-service.yaml │ ├── alertmanager-serviceAccount.yaml │ ├── alertmanager-serviceMonitor.yaml │ ├── blackboxExporter-clusterRole.yaml │ ├── blackboxExporter-clusterRoleBinding.yaml │ ├── blackboxExporter-configuration.yaml │ ├── blackboxExporter-deployment.yaml │ ├── blackboxExporter-networkPolicy.yaml │ ├── blackboxExporter-service.yaml │ ├── blackboxExporter-serviceAccount.yaml │ ├── blackboxExporter-serviceMonitor.yaml │ ├── grafana-config.yaml │ ├── grafana-dashboardDatasources.yaml │ ├── grafana-dashboardDefinitions.yaml │ ├── grafana-dashboardSources.yaml │ ├── grafana-deployment.yaml │ ├── grafana-networkPolicy.yaml │ ├── grafana-prometheusRule.yaml │ ├── grafana-service.yaml │ ├── grafana-serviceAccount.yaml │ ├── grafana-serviceMonitor.yaml │ ├── kubePrometheus-prometheusRule.yaml │ ├── kubeStateMetrics-clusterRole.yaml │ ├── kubeStateMetrics-clusterRoleBinding.yaml │ ├── kubeStateMetrics-deployment.yaml │ ├── kubeStateMetrics-networkPolicy.yaml │ ├── kubeStateMetrics-prometheusRule.yaml │ ├── kubeStateMetrics-service.yaml │ ├── kubeStateMetrics-serviceAccount.yaml │ ├── kubeStateMetrics-serviceMonitor.yaml │ ├── kubernetesControlPlane-prometheusRule.yaml │ ├── kubernetesControlPlane-serviceMonitorApiserver.yaml │ ├── kubernetesControlPlane-serviceMonitorCoreDNS.yaml │ ├── kubernetesControlPlane-serviceMonitorKubeControllerManager.yaml │ ├── kubernetesControlPlane-serviceMonitorKubeScheduler.yaml │ ├── kubernetesControlPlane-serviceMonitorKubelet.yaml │ ├── nodeExporter-clusterRole.yaml │ ├── nodeExporter-clusterRoleBinding.yaml │ ├── nodeExporter-daemonset.yaml │ ├── nodeExporter-networkPolicy.yaml │ ├── nodeExporter-prometheusRule.yaml │ ├── nodeExporter-service.yaml │ ├── nodeExporter-serviceAccount.yaml │ ├── nodeExporter-serviceMonitor.yaml │ ├── prometheus-clusterRole.yaml │ ├── prometheus-clusterRoleBinding.yaml │ ├── prometheus-networkPolicy.yaml │ ├── prometheus-podDisruptionBudget.yaml │ ├── prometheus-prometheus.yaml │ ├── prometheus-prometheusRule.yaml │ ├── prometheus-roleBindingConfig.yaml │ ├── prometheus-roleBindingSpecificNamespaces.yaml │ ├── prometheus-roleConfig.yaml │ ├── prometheus-roleSpecificNamespaces.yaml │ ├── prometheus-service.yaml │ ├── prometheus-serviceAccount.yaml │ ├── prometheus-serviceMonitor.yaml │ ├── prometheusAdapter-apiService.yaml │ ├── prometheusAdapter-clusterRole.yaml │ ├── prometheusAdapter-clusterRoleAggregatedMetricsReader.yaml │ ├── prometheusAdapter-clusterRoleBinding.yaml │ ├── prometheusAdapter-clusterRoleBindingDelegator.yaml │ ├── prometheusAdapter-clusterRoleServerResources.yaml │ ├── prometheusAdapter-configMap.yaml │ ├── prometheusAdapter-deployment.yaml │ ├── prometheusAdapter-networkPolicy.yaml │ ├── prometheusAdapter-podDisruptionBudget.yaml │ ├── prometheusAdapter-roleBindingAuthReader.yaml │ ├── prometheusAdapter-service.yaml │ ├── prometheusAdapter-serviceAccount.yaml │ ├── prometheusAdapter-serviceMonitor.yaml │ ├── prometheusOperator-clusterRole.yaml │ ├── prometheusOperator-clusterRoleBinding.yaml │ ├── prometheusOperator-deployment.yaml │ ├── prometheusOperator-networkPolicy.yaml │ ├── prometheusOperator-prometheusRule.yaml │ ├── prometheusOperator-service.yaml │ ├── prometheusOperator-serviceAccount.yaml │ ├── prometheusOperator-serviceMonitor.yaml │ └── setup/ │ ├── 0alertmanagerConfigCustomResourceDefinition.yaml │ ├── 0alertmanagerCustomResourceDefinition.yaml │ ├── 0podmonitorCustomResourceDefinition.yaml │ ├── 0probeCustomResourceDefinition.yaml │ ├── 0prometheusCustomResourceDefinition.yaml │ ├── 0prometheusagentCustomResourceDefinition.yaml │ ├── 0prometheusruleCustomResourceDefinition.yaml │ ├── 0scrapeconfigCustomResourceDefinition.yaml │ ├── 0servicemonitorCustomResourceDefinition.yaml │ ├── 0thanosrulerCustomResourceDefinition.yaml │ └── namespace.yaml ├── scripts/ │ ├── generate-schemas.sh │ ├── generate-versions.sh │ ├── get-new-changelogs.sh │ ├── go.mod │ ├── go.sum │ ├── minikube-start-kvm.sh │ ├── minikube-start.sh │ ├── monitoring-deploy.sh │ ├── test.sh │ └── tools.go └── tests/ └── e2e/ ├── kind/ │ ├── config.yml │ ├── kube-router.yaml │ ├── kubernetesControlPlane-kubeControllerManagerPrometheusDiscoveryService.yaml │ ├── kubernetesControlPlane-kubeSchedulerPrometheusDiscoveryService.yaml │ └── patches/ │ └── kube-controller-manager.yaml ├── main_test.go └── prometheus_client.go ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/CODEOWNERS ================================================ * @prometheus-operator/kube-prometheus-reviewers ================================================ FILE: .github/ISSUE_TEMPLATE/bug.md ================================================ --- name: Bug about: Report a bug related to kube-prometheus labels: kind/bug --- **What happened?** **Did you expect to see some different?** **How to reproduce it (as minimally and precisely as possible)**: **Environment** * Prometheus Operator version: `Insert image tag or Git SHA here` * Kubernetes version information: `kubectl version` * Kubernetes cluster kind: insert how you created your cluster: kops, bootkube, tectonic-installer, etc. * Manifests: ``` insert manifests relevant to the issue ``` * Prometheus Operator Logs: ``` Insert Prometheus Operator logs relevant to the issue here ``` * Prometheus Logs: ``` Insert Prometheus logs relevant to the issue here ``` **Anything else we need to know?**: ================================================ FILE: .github/ISSUE_TEMPLATE/feature.md ================================================ --- name: Feature about: If you want to propose a new feature or enhancement labels: kind/feature --- **What is missing?** **Why do we need it?** **Environment** * kube-prometheus version: `Insert Git SHA here` **Anything else we need to know?**: ================================================ FILE: .github/ISSUE_TEMPLATE/support.md ================================================ --- name: Support about: If you have questions about kube-prometheus labels: kind/support --- This repository now has the new GitHub Discussions enabled: https://github.com/prometheus-operator/kube-prometheus/discussions Please create a new discussion to ask for any kind of support, which is not a Bug or Feature Request. Thank you for being part of this community! --- We are still happy to chat with you in the #prometheus-operator channel on Kubernetes Slack! ================================================ FILE: .github/PULL_REQUEST_TEMPLATE.md ================================================ ## Description _Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request. If it fixes a bug or resolves a feature request, be sure to link to that issue._ ## Type of change _What type of changes does your code introduce to the kube-prometheus? Put an `x` in the box that apply._ - [ ] `CHANGE` (fix or feature that would cause existing functionality to not work as expected) - [ ] `FEATURE` (non-breaking change which adds functionality) - [ ] `BUGFIX` (non-breaking change which fixes an issue) - [ ] `ENHANCEMENT` (non-breaking change which improves existing functionality) - [ ] `NONE` (if none of the other choices apply. Example, tooling, build system, CI, docs, etc.) ## Changelog entry _Please put a one-line changelog entry below. Later this will be copied to the changelog file._ ```release-note ``` ================================================ FILE: .github/dependabot.yml ================================================ version: 2 updates: - package-ecosystem: gomod directory: / schedule: interval: daily - package-ecosystem: gomod directory: /scripts/ schedule: interval: daily - package-ecosystem: github-actions directory: / schedule: interval: daily ================================================ FILE: .github/env ================================================ kind-version=v0.31.0 golang-version=1.25 ================================================ FILE: .github/workflows/action-lint.yaml ================================================ name: lint gitHub action workflows on: push: paths: - ".github/workflows/**" pull_request: paths: - ".github/workflows/**" jobs: lint: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v6 - name: Download actionlint id: get_actionlint run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/v1.7.7/scripts/download-actionlint.bash) shell: bash - name: Check workflow files run: ${{ steps.get_actionlint.outputs.executable }} -color shell: bash ================================================ FILE: .github/workflows/ci.yaml ================================================ name: ci on: - push - pull_request jobs: generate: runs-on: ${{ matrix.os }} strategy: matrix: os: - macos-latest - ubuntu-latest name: Generate steps: - uses: actions/checkout@v6 with: persist-credentials: false - name: Import environment variables from file run: cat ".github/env" >> "$GITHUB_ENV" - uses: actions/setup-go@v6 with: go-version: ${{ env.golang-version }} - run: make --always-make generate validate && git diff --exit-code check-docs: runs-on: ubuntu-latest name: Check Documentation formatting and links steps: - uses: actions/checkout@v6 with: persist-credentials: false - name: Import environment variables from file run: cat ".github/env" >> "$GITHUB_ENV" - uses: actions/setup-go@v6 with: go-version: ${{ env.golang-version }} - run: make check-docs lint: runs-on: ubuntu-latest name: Jsonnet linter steps: - uses: actions/checkout@v6 with: persist-credentials: false - name: Import environment variables from file run: cat ".github/env" >> "$GITHUB_ENV" - uses: actions/setup-go@v6 with: go-version: ${{ env.golang-version }} - run: make --always-make lint fmt: runs-on: ubuntu-latest name: Jsonnet formatter steps: - uses: actions/checkout@v6 with: persist-credentials: false - name: Import environment variables from file run: cat ".github/env" >> "$GITHUB_ENV" - uses: actions/setup-go@v6 with: go-version: ${{ env.golang-version }} - run: make --always-make fmt && git diff --exit-code unit-tests: runs-on: ubuntu-latest name: Unit tests steps: - uses: actions/checkout@v6 with: persist-credentials: false - name: Import environment variables from file run: cat ".github/env" >> "$GITHUB_ENV" - uses: actions/setup-go@v6 with: go-version: ${{ env.golang-version }} - run: make --always-make test security-audit: runs-on: ubuntu-latest name: Run security analysis on manifests steps: - uses: actions/checkout@v6 with: persist-credentials: false - run: make --always-make kubescape e2e-tests: name: E2E tests runs-on: ubuntu-latest strategy: matrix: kind-image: - "kindest/node:v1.35.1" - "kindest/node:v1.34.3" - "kindest/node:v1.33.7" steps: - uses: actions/checkout@v6 with: persist-credentials: false - name: Import environment variables from file run: cat ".github/env" >> "$GITHUB_ENV" - uses: actions/setup-go@v6 with: go-version: ${{ env.golang-version }} - name: Start kind cluster uses: helm/kind-action@v1.14.0 with: version: ${{ env.kind-version }} node_image: ${{ matrix.kind-image }} wait: 10s # Without default CNI, control-plane doesn't get ready until Cilium is installed config: tests/e2e/kind/config.yml cluster_name: e2e - name: Install kube-router for NetworkPolicy support run: | kubectl apply -f tests/e2e/kind/kube-router.yaml - name: Install kube-scheduler and kube-controller-manager services run: | kubectl apply -f tests/e2e/kind/kubernetesControlPlane-kubeControllerManagerPrometheusDiscoveryService.yaml && \ kubectl apply -f tests/e2e/kind/kubernetesControlPlane-kubeSchedulerPrometheusDiscoveryService.yaml - name: Wait for cluster to finish bootstraping run: kubectl wait --for=condition=Ready pods --all --all-namespaces --timeout=300s - name: Create kube-prometheus stack run: | kubectl create -f manifests/setup until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done kubectl create -f manifests/ - name: Wait for kube-prometheus stack to finish bootstraping run: kubectl wait --for=condition=Ready pods --all -n monitoring --timeout=300s - name: Check resources in all namespaces run: kubectl get services,endpoints,pods,prometheus,alertmanager --all-namespaces - name: Run tests run: | export KUBECONFIG="${HOME}/.kube/config" make test-e2e # Added to summarize the matrix and allow easy branch protection rules setup e2e-tests-result: name: End-to-End Test Results if: always() needs: - e2e-tests runs-on: ubuntu-latest steps: - name: Mark the job as a success if: needs.e2e-tests.result == 'success' run: exit 0 - name: Mark the job as a failure if: needs.e2e-tests.result != 'success' run: exit 1 ================================================ FILE: .github/workflows/stale.yaml ================================================ name: 'Close stale issues and PRs' on: schedule: - cron: '30 3 * * *' jobs: stale: runs-on: ubuntu-latest steps: - uses: actions/stale@v10 with: stale-issue-message: 'This issue has been automatically marked as stale because it has not had any activity in the last 60 days. Thank you for your contributions.' close-issue-message: 'This issue was closed because it has not had any activity in the last 120 days. Please reopen if you feel this is still valid.' days-before-stale: 60 days-before-issue-close: 120 days-before-pr-close: -1 # Prevent closing PRs exempt-issue-labels: 'kind/feature,help wanted,kind/bug' stale-issue-label: 'stale' stale-pr-label: 'stale' exempt-draft-pr: true operations-per-run: 500 ================================================ FILE: .github/workflows/versions.yaml ================================================ name: Upgrade to latest versions on: workflow_dispatch: schedule: - cron: "37 7 * * 1" jobs: versions: runs-on: ubuntu-latest strategy: matrix: branch: # testing will be done against last two release branches and main branch - "release-0.16" - "release-0.17" - "main" steps: - uses: actions/checkout@v6 with: ref: ${{ matrix.branch }} - name: Import environment variables from file run: cat ".github/env" >> "$GITHUB_ENV" - uses: actions/setup-go@v6 with: go-version: ${{ env.golang-version }} - name: Upgrade versions id: versions run: | export GITHUB_TOKEN="${{ secrets.GITHUB_TOKEN }}" # Write to temporary file to make update atomic scripts/generate-versions.sh > /tmp/versions.json mv /tmp/versions.json jsonnet/kube-prometheus/versions.json # Display the raw diff between versions. git diff # Get the links to the changelogs of the updated versions and make them # available to the reviewers # 1) Open the multiline output echo "new_changelogs<> "$GITHUB_OUTPUT" # 2) Run changelog script without exiting on error set +e scripts/get-new-changelogs.sh >> "$GITHUB_OUTPUT" script_rc=$? set -e # 3) Close the multiline output echo "EOF" >> "$GITHUB_OUTPUT" # 4) Fail if the script actually errored if [ $script_rc -ne 0 ]; then echo "::error::get-new-changelogs.sh failed with exit code $script_rc" exit $script_rc fi if: matrix.branch == 'main' - name: Update jsonnet dependencies run: | make update make generate # Reset jsonnetfile.lock.json if no dependencies were updated. # grep returns 0 when it matches at least 1 line in the diff output. if ! git diff --name-only | grep -qv 'jsonnetfile.lock.json'; then git checkout -- jsonnetfile.lock.json; fi - name: Create Pull Request uses: peter-evans/create-pull-request@v8 with: commit-message: "[bot] [${{ matrix.branch }}] Automated version update" title: "[bot] [${{ matrix.branch }}] Automated version update" body: | ## Description This is an automated version and jsonnet dependencies update performed from CI. Please review the following changelogs to make sure that we don't miss any important changes before merging this PR. ${{ steps.versions.outputs.new_changelogs }} Configuration of the workflow is located in `.github/workflows/versions.yaml`. ## Type of change - [x] `NONE` (if none of the other choices apply. Example, tooling, build system, CI, docs, etc.) ## Changelog entry ```release-note ``` team-reviewers: kube-prometheus-reviewers committer: Prometheus Operator Bot author: Prometheus Operator Bot branch: automated-updates-${{ matrix.branch }} delete-branch: true # GITHUB_TOKEN cannot be used as it won't trigger CI in a created PR # More in https://github.com/peter-evans/create-pull-request/issues/155 token: ${{ secrets.PROM_OP_BOT_PAT }} ================================================ FILE: .gitignore ================================================ tmp/ minikube-manifests/ vendor/ ./auth .swp crdschemas/ .mdoxcache developer-workspace/gitpod/_output developer-workspace/codespaces/kind ================================================ FILE: .gitpod.yml ================================================ image: gitpod/workspace-full checkoutLocation: gitpod-k3s tasks: - init: | make --always-make export PATH="$(pwd)/tmp/bin:${PATH}" cat > ${PWD}/.git/hooks/pre-commit < /dev/null 2>&1 echo "Checking if manifests are correct" make generate > /dev/null 2>&1 git diff --exit-code if [[ \$? == 1 ]]; then echo " This commit is being rejected because the YAML manifests are incorrect or jsonnet needs to be formatted." echo "Please commit your changes again!" exit 1 fi EOF chmod +x ${PWD}/.git/hooks/pre-commit - name: run kube-prometheus command: | developer-workspace/gitpod/prepare-k3s.sh developer-workspace/common/deploy-kube-prometheus.sh - name: kernel dev environment init: | sudo apt update -y sudo apt install qemu qemu-system-x86 linux-image-$(uname -r) libguestfs-tools sshpass netcat -y sudo curl -o /usr/bin/kubectl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" sudo chmod +x /usr/bin/kubectl developer-workspace/gitpod/prepare-rootfs.sh command: | developer-workspace/gitpod/qemu.sh ports: - port: 3000 onOpen: open-browser - port: 9090 onOpen: open-browser - port: 9093 onOpen: open-browser vscode: extensions: - heptio.jsonnet ================================================ FILE: .mdox.validate.yaml ================================================ version: 1 validators: # Ignore localhost links. - regex: 'localhost' type: "ignore" # Ignore release links. - regex: 'https:\/\/github\.com\/prometheus-operator\/kube-prometheus\/releases' type: "ignore" # Ignore github issue link that is timing out - regex: 'https:\/\/github\.com\/kubernetes-incubator\/kube-aws\/issues\/923' type: "ignore" # Twitter changed their policy and now returns 403 if not authenticated. We can guarantee this link since we own the account. - regex: 'https:\/\/twitter.com\/PromOperator' type: "ignore" # the www.weave.works domain returns 404 for many pages. # Ignoring for now but we need remove the related content if it persists. - regex: 'https:\/\/www.weave.works.*' type: "ignore" # StackOverflow returns 403 for automated requests. - regex: 'https:\/\/stackoverflow.com.*' type: "ignore" ================================================ FILE: CHANGELOG.md ================================================ ## release-0.17 / 2026-03-19 * [CHANGE] Remove `alertmanagerName` and `thanosSelector` configuration options from `prometheus.libsonnet`. [#2755](https://github.com/prometheus-operator/kube-prometheus/pull/2755) * [CHANGE] Migrate service discovery to EndpointSlices. [#2752](https://github.com/prometheus-operator/kube-prometheus/pull/2752) * [CHANGE] Alertmanager: select AlertmanagerConfig CRs within its own namespace by default. [#2747](https://github.com/prometheus-operator/kube-prometheus/pull/2747) * [BUGFIX] Fix InfoInhibitor alert failing with duplicate series error when multiple info-level alerts fire in the same namespace. [#2786](https://github.com/prometheus-operator/kube-prometheus/pull/2786) * [BUGFIX] Add EndpointSlices RBAC to all-namespaces addon. [#2760](https://github.com/prometheus-operator/kube-prometheus/pull/2760) * [BUGFIX] Drop deprecated `apiserver_storage_objects` metric (replaced by `apiserver_resource_objects` since Kubernetes 1.34). [#2809](https://github.com/prometheus-operator/kube-prometheus/pull/2809) ## release-0.16 / 2025-08-28 * [ENHANCEMENT] Add common labels to blackbox-exporter ClusterRole. [#2667](https://github.com/prometheus-operator/kube-prometheus/pull/2667) * [ENHANCEMENT] Add labels to AWS VPC CNI Service and ServiceMonitor. [#2668](https://github.com/prometheus-operator/kube-prometheus/pull/2668) * [ENHANCEMENT] Add component label to Kubernetes control-plane resources. [#2669](https://github.com/prometheus-operator/kube-prometheus/pull/2669) * [CHANGE] AKS platform: change Service name and `job` label. [#2665](https://github.com/prometheus-operator/kube-prometheus/pull/2665) ## release-0.15 / 2025-06-04 * [FEATURE] Add config option for storage to Prometheus and Alertmanager servers[#2651](https://github.com/prometheus-operator/kube-prometheus/pull/2651) * [ENHANCEMENT] Reduce apiserver metric cardinality [#2531](https://github.com/prometheus-operator/kube-prometheus/pull/2531) * [BUGFIX] Fix port allocation for node-exporter [#2627](https://github.com/prometheus-operator/kube-prometheus/pull/2627) * [BUGFIX] Fix procfs location for node-exporter [#2549](https://github.com/prometheus-operator/kube-prometheus/pull/2549) * [BUGFIX] Drop `process_start_time_seconds` from Kubelet slis endpoint [#2530](https://github.com/prometheus-operator/kube-prometheus/pull/2530) ## release-0.14 / 2024-09-12 * [CHANGE] Prefer new form for `kube_node_status_capacity_pods` metric [#2269](https://github.com/prometheus-operator/kube-prometheus/pull/2269) * [CHANGE] Add runAsGroup to all components [#2424](https://github.com/prometheus-operator/kube-prometheus/pull/2424) * [FEATURE] Add support for ScrapeConfig [#2232](https://github.com/prometheus-operator/kube-prometheus/pull/2232) * [FEATURE] Add Kubernetes components SLI metrics [#2496](https://github.com/prometheus-operator/kube-prometheus/pull/2496) * [FEATURE] Add monitor and rules resources to user-facing roles add-on [#2238](https://github.com/prometheus-operator/kube-prometheus/pull/2238) * [BUGFIX] Add thanos-sidecar metrics port to Prometheus Service and NetworkPolicy [#2330](https://github.com/prometheus-operator/kube-prometheus/pull/2330) * [ENHANCEMENT] Add ability to inject Secrets into alertmanager [#2206](https://github.com/prometheus-operator/kube-prometheus/pull/2206) * [ENHANCEMENT] Add securityContext items and Pod security labels [#2178](https://github.com/prometheus-operator/kube-prometheus/pull/2178) ## release-0.13 / 2023-08-31 * [CHANGE] Added a AKS platform to `platforms.libsonnet` [#1997](https://github.com/prometheus-operator/kube-prometheus/pull/1997) * [CHANGE] Disable btrfs collector by default [#2074](https://github.com/prometheus-operator/kube-prometheus/pull/2074) * [CHANGE] Enable Multi Cluster alerts by default [#2099](https://github.com/prometheus-operator/kube-prometheus/pull/2099) * [FEATURE] Create dedicated Service to expose CoreDNS metric [#2107](https://github.com/prometheus-operator/kube-prometheus/pull/2107) * [FEATURE] Add Windows support using Hostprocess instead of static_configs [#2048](https://github.com/prometheus-operator/kube-prometheus/pull/2048) * [BUGFIX] Fix a compilation error when building the custom-metrics addon [#1996](https://github.com/prometheus-operator/kube-prometheus/pull/1996) * [BUGFIX] Add `prometheus-adapter` in Prometheus's NetworkPolicy [#1982](https://github.com/prometheus-operator/kube-prometheus/pull/1982) * [BUGFIX] Fix namespace specified in manifest non-namespaced resources [#2158](https://github.com/prometheus-operator/kube-prometheus/pull/2158) * [BUGFIX] Override ServiceAccount, Role and ClusterRole names in RoleBinding and ClusterRoleBinding [#2135](https://github.com/prometheus-operator/kube-prometheus/pull/2135) * [BUGFIX] Remove deprecated `--logtostderr` argument of prometheus-adapter [#2185](https://github.com/prometheus-operator/kube-prometheus/pull/2185) * [BUGFIX] Fix alertmanager external config example [#1891](https://github.com/prometheus-operator/kube-prometheus/pull/1891) * [ENHANCEMENT] Add startupProbe to prometheus-adapter [#2029](https://github.com/prometheus-operator/kube-prometheus/pull/2029) * [ENHANCEMENT] Added configurable default values for kube-rbac-proxy in prometheus-operator, node-exporter and blackbox-exporter [#1987](https://github.com/prometheus-operator/kube-prometheus/pull/1987) * [ENHANCEMENT] Modify control plane ServiceMonitors to be compatible with Argo [#2041](https://github.com/prometheus-operator/kube-prometheus/pull/2041) * [ENHANCEMENT] Add md5 hash of the ConfigMap in Prometheus Adapter Deployment Annotations to force its recreation [#2195](https://github.com/prometheus-operator/kube-prometheus/pull/2195) ## release-0.12 / 2023-01-19 * [CHANGE] Updates Prometheus Adapater version to 0.10.0 [#1865](https://github.com/prometheus-operator/kube-prometheus/pull/1865) * [FEATURE] Added a AKS platform [#1869](https://github.com/prometheus-operator/kube-prometheus/pull/1869) * [BUGFIX] Update Pyrra to 0.4.2 [#1800](https://github.com/prometheus-operator/kube-prometheus/pull/1800) * [BUGFIX] Jsonnet: enable automountServiceAccountToken for prometheus service account [#1808](https://github.com/prometheus-operator/kube-prometheus/pull/1808) * [BUGFIX] Fix diskDeviceSelector regex for aks and eks [#1810](https://github.com/prometheus-operator/kube-prometheus/pull/1810) * [BUGFIX] Set path.udev.data Argument of Node Exporter [#1913](https://github.com/prometheus-operator/kube-prometheus/pull/1913) * [BUGFIX] Include RAID device md.* in disk seletor [#1945](https://github.com/prometheus-operator/kube-prometheus/pull/1945) * [ENHANCEMENT] Prometheus-adapter: add prefix option to config for container metrics [#1844](https://github.com/prometheus-operator/kube-prometheus/pull/1844) * [ENHANCEMENT] Switch kube-state-metrics registry to registry.k8s.io [#1914](https://github.com/prometheus-operator/kube-prometheus/pull/1914) * [ENHANCEMENT] Node Exporter: add parameter for ignored network devices [#1887](https://github.com/prometheus-operator/kube-prometheus/pull/1887) ## release-0.11 / 2022-06-15 * [CHANGE] Disable injecting unnecessary variables allowing access to k8s API [#1591](https://github.com/prometheus-operator/kube-prometheus/pull/1591) * [FEATURE] Add grafana-mixin [#1458](https://github.com/prometheus-operator/kube-prometheus/pull/1458) * [FEATURE] Add example usage of prometheus-agent [#1472](https://github.com/prometheus-operator/kube-prometheus/pull/1472) * [FEATURE] Add Pyrra as (optional) component [#1667](https://github.com/prometheus-operator/kube-prometheus/pull/1667) * [ENHANCEMENT] Adds NetworkPolicies to all components of Kube-prometheus [#1650](https://github.com/prometheus-operator/kube-prometheus/pull/1650) * [ENHANCEMENT] Scan generated manifests with kubescape in CI [#1584](https://github.com/prometheus-operator/kube-prometheus/pull/1584) * [ENHANCEMENT] Explicitly declare allowPrivilegeEscalation to false in all components [#1593](https://github.com/prometheus-operator/kube-prometheus/pull/1593) * [ENHANCEMENT] Forbid write access to root filesystem [#1600](https://github.com/prometheus-operator/kube-prometheus/pull/1600) * [ENHANCEMENT] Drop Linux capabilities, , just keeping CAP_SYS_TIME for node-exporter [#1610](https://github.com/prometheus-operator/kube-prometheus/pull/1610) * [ENHANCEMENT] Remove hostPort from node-export daemonset [#1612](https://github.com/prometheus-operator/kube-prometheus/pull/1612) * [ENHANCEMENT] Add priorityClassName as system-cluster-critical for node_exporter [#1649](https://github.com/prometheus-operator/kube-prometheus/pull/1649) * [ENHANCEMENT] Added custom overrides for kube-rbac-proxy-self [#1637](https://github.com/prometheus-operator/kube-prometheus/pull/1637) * [ENHANCEMENT] Adds readinessProbe and livenessProbe to prometheus-adapter jsonnet [#1696](https://github.com/prometheus-operator/kube-prometheus/pull/1696) * [BUGFIX] Update kubeadm integration of kube-prometheus [#1569](https://github.com/prometheus-operator/kube-prometheus/pull/1569) * [BUGFIX] Add projected volumes permission to addon/podsecuritypolicie [#1572](https://github.com/prometheus-operator/kube-prometheus/pull/1572) * [BUGFIX] Hide namespace for prometheus clusterRole and clusterRolebinding [#1566](https://github.com/prometheus-operator/kube-prometheus/pull/1566) * [BUGFIX] Fix accidentally broken thanosSelector after #1543 [#1556](https://github.com/prometheus-operator/kube-prometheus/pull/1556) * [BUGFIX] Jsonnet: filter out kube-proxy alerts when kube-proxy is disabled [#1609](https://github.com/prometheus-operator/kube-prometheus/pull/1609) * [BUGFIX] Sanitize regex denylist in ksm-lite addon [#1613](https://github.com/prometheus-operator/kube-prometheus/pull/1613) * [BUGFIX] Sanitize all regex denylist in ksm-lite addon [#1614](https://github.com/prometheus-operator/kube-prometheus/pull/1614) * [BUGFIX] Add extra-volume mount for plugins downloads [#1624](https://github.com/prometheus-operator/kube-prometheus/pull/1624) * [BUGFIX] Added allowedCapabilities to node-exporter psp [#1642](https://github.com/prometheus-operator/kube-prometheus/pull/1642) * [BUGFIX] Fix cluster:node_cpu:ratio query [#1628](https://github.com/prometheus-operator/kube-prometheus/pull/1628) * [BUGFIX] Removed CAP_ from node-exporter daemonset [#1647](https://github.com/prometheus-operator/kube-prometheus/pull/1647) * [BUGFIX] Update PodMonitor for kube-proxy [#1630](https://github.com/prometheus-operator/kube-prometheus/pull/1630) * [BUGFIX] Adds port name to prometheus-adapter [#1701](https://github.com/prometheus-operator/kube-prometheus/pull/1701) * [BUGFIX] Fix grafana network access [#1721](https://github.com/prometheus-operator/kube-prometheus/pull/1721) * [BUGFIX] Fix networkpolicies-disabled addon [#1724](https://github.com/prometheus-operator/kube-prometheus/pull/1724) * [BUGFIX] Adjust NodeFilesystemSpaceFillingUp thresholds according default kubelet GC behavior [#1729](https://github.com/prometheus-operator/kube-prometheus/pull/1729) * [BUGFIX] Fix problems when enabling eks platform patch [#1675](https://github.com/prometheus-operator/kube-prometheus/pull/1675) * [BUGFIX] Access requests to sidecar from thanos-query [#1730](https://github.com/prometheus-operator/kube-prometheus/pull/1730) * [BUGFIX] Fix prometheus namespace connection for addons/pyrra [#1734](https://github.com/prometheus-operator/kube-prometheus/pull/1734) ## release-0.10 / 2021-12-17 * [CHANGE] Adjust node filesystem space filling up warning threshold to 20% [#1357](https://github.com/prometheus-operator/kube-prometheus/pull/1357) * [CHANGE] Always generate grafana-config secret [#1373](https://github.com/prometheus-operator/kube-prometheus/pull/1373) * [CHANGE] Make filesystem ignored mount points configurable for node-exporter [#1376](https://github.com/prometheus-operator/kube-prometheus/pull/1376) * [CHANGE] Drop some high cardinality cAdvisor metrics [#1406](https://github.com/prometheus-operator/kube-prometheus/pull/1406), [#1396](https://github.com/prometheus-operator/kube-prometheus/pull/1396) * [CHANGE] Use `--collector.filesystem.mount-points-exclude` instead of deprecated `--collector.filesystem.ignored-mount-points` argument for `node-exporter` [#1407](https://github.com/prometheus-operator/kube-prometheus/pull/1407) * [CHANGE] Drop some of prometheus-adapter metrics that are inherited from the apiserver code but aren't useful in the context of prometheus-adapter [#1409](https://github.com/prometheus-operator/kube-prometheus/pull/1409) * [CHANGE] Remove "app" label selector deprecated by Prometheus-operator [#1420](https://github.com/prometheus-operator/kube-prometheus/pull/1420) * [CHANGE] Use recommended instance label for Prometheus/Alertmanager resources [#1520](https://github.com/prometheus-operator/kube-prometheus/pull/1520) * [CHANGE] Drop deprecated apiserver_longrunning_gauge and apiserver_registered_watchers metrics [#1553](https://github.com/prometheus-operator/kube-prometheus/pull/1553) * [CHANGE] Drop deprecated coredns_cache_misses_total [#1553](https://github.com/prometheus-operator/kube-prometheus/pull/1553) * [ENHANCEMENT] Add support for LDAP authentication in Grafana [#1455](https://github.com/prometheus-operator/kube-prometheus/pull/1445) * [ENHANCEMENT] Include rewritten kubernetes-grafana for easier usage of new library features [#1450](https://github.com/prometheus-operator/kube-prometheus/pull/1450) * [ENHANCEMENT] Specify default container in node-exporter pod [#1462](https://github.com/prometheus-operator/kube-prometheus/pull/1462) * [ENHANCEMENT] Make metadata consistent across objects in the same component [#1471](https://github.com/prometheus-operator/kube-prometheus/pull/1471) * [ENHANCEMENT] Establish convention for default field types [#1475](https://github.com/prometheus-operator/kube-prometheus/pull/1475) * [ENHANCEMENT] Exclude k3s containerd mountpoints [#1497](https://github.com/prometheus-operator/kube-prometheus/pull/1497) * [ENHANCEMENT] Alertmanager now uses the new `matcher` syntax in the routing tree and inhibition rules [#1508](https://github.com/prometheus-operator/kube-prometheus/pull/1508) * [ENHANCEMENT] Deprecate `thanosSelector` and expose `mixin._config.thanos` config variable for thanos sidecar [#1543](https://github.com/prometheus-operator/kube-prometheus/pull/1543) * [ENHANCEMENT] Added configurable default values for sidecar container kube-rbac-proxy-self in deployment kube-statate-metrics. [#1637](https://github.com/prometheus-operator/kube-prometheus/pull/1637) * [FEATURE] Support scraping config-reloader sidecar for Prometheus and AlertManager StatefulSets [#1344](https://github.com/prometheus-operator/kube-prometheus/pull/1344) * [FEATURE] Expose prometheus alerting configuration in $.values.prometheus configuration [#1476](https://github.com/prometheus-operator/kube-prometheus/pull/1476) * [BUGFIX] Remove deprecated policy/v1beta1 Kubernetes API [#1433](https://github.com/prometheus-operator/kube-prometheus/pull/1433) * [BUGFIX] Fix prometheus URL in prometheus-adapter [#1463](https://github.com/prometheus-operator/kube-prometheus/pull/1463) * [BUGFIX] Always use proper values scope for namespace in addons [#1518](https://github.com/prometheus-operator/kube-prometheus/pull/1518) * [BUGFIX] Fix default empty groups for k8s PrometheusRule [#1534](https://github.com/prometheus-operator/kube-prometheus/pull/1534) ## release-0.9 / 2021-08-19 * [CHANGE] Test against Kubernetes 1.21 and 1,22. #1161 #1337 * [CHANGE] Drop cAdvisor metrics without (pod, namespace) label pairs. #1250 * [CHANGE] Excluded deprecated `etcd_object_counts` metric. #1337 * [FEATURE] Add PodDisruptionBudget to prometheus-adapter. #1136 * [FEATURE] Add support for feature flags in Prometheus. #1129 * [FEATURE] Add env parameter for grafana component. #1171 * [FEATURE] Add gitpod deployment of kube-prometheus on k3s. #1211 * [FEATURE] Add resource requests and limits to prometheus-adapter container. #1282 * [FEATURE] Add PodMonitor for kube-proxy. #1230 * [FEATURE] Turn AWS VPC CNI into a control plane add-on. #1307 * [ENHANCEMENT] Export anti-affinity addon. #1114 * [ENHANCEMENT] Allow changing configmap-reloader, grafana, and kube-rbac-proxy images in $.values.common.images. #1123 #1124 #1125 * [ENHANCEMENT] Add automated version upgrader. #1166 * [ENHANCEMENT] Improve all-namespace addon. #1131 * [ENHANCEMENT] Add example of running without grafana deployment. #1201 * [ENHANCEMENT] Import managed-cluster addon for the EKS platform. #1205 * [ENHANCEMENT] Automatically update jsonnet dependencies. #1220 * [ENHANCEMENT] Adapt kube-prometheus to changes to ovn veth interfaces names. #1224 * [ENHANCEMENT] Add example release-0.3 to release-0.8 migration to docs. #1235 * [ENHANCEMENT] Consolidate intervals used in prometheus-adapter CPU queries. #1231 * [ENHANCEMENT] Create dashboardDefinitions if rawDashboards or folderDashboards are specified. #1255 * [ENHANCEMENT] Relabel instance with node name for CNI DaemonSet on EKS. #1259 * [ENHANCEMENT] Update doc on Prometheus rule updates since release 0.8. #1253 * [ENHANCEMENT] Point runbooks to https://runbooks.prometheus-operator.dev. #1267 * [ENHANCEMENT] Allow setting of kubeRbacProxyMainResources in kube-state-metrics. #1257 * [ENHANCEMENT] Automate release branch updates. #1293 #1303 * [ENHANCEMENT] Create Thanos Sidecar rules separately from Prometheus ones. #1308 * [ENHANCEMENT] Allow using newer jsonnet-bundler dependency resolution when using windows addon. #1310 * [ENHANCEMENT] Prometheus ruleSelector defaults to all rules. * [BUGFIX] Fix kube-state-metrics metric denylist regex pattern. #1146 * [BUGFIX] Fix missing resource config in blackbox exporter. #1148 * [BUGFIX] Fix adding private repository. #1169 * [BUGFIX] Fix kops selectors for scheduler, controllerManager and kube-dns. #1164 * [BUGFIX] Fix scheduler and controller selectors for Kubespray. #1142 * [BUGFIX] Fix label selector for coredns ServiceMonitor. #1200 * [BUGFIX] Fix name for blackbox-exporter PodSecurityPolicy. #1213 * [BUGFIX] Fix ingress path rules for networking.k8s.io/v1. #1212 * [BUGFIX] Disable insecure cypher suites for prometheus-adapter. #1216 * [BUGFIX] Fix CNI metrics relabelings on EKS. #1277 * [BUGFIX] Fix node-exporter ignore list for OVN. #1283 * [BUGFIX] Revert back to awscni_total_ip_addresses-based alert on EKS. #1292 * [BUGFIX] Allow passing `thanos: {}` to prometheus configuration. #1325 ================================================ FILE: CONTRIBUTING.md ================================================ # Contributing This project is licensed under the [Apache 2.0 license](LICENSE) and accept contributions via GitHub pull requests. This document outlines some of the conventions on development workflow, commit message formatting, contact points and other resources to make it easier to get your contribution accepted. To maintain a safe and welcoming community, all participants must adhere to the project's [Code of Conduct](code-of-conduct.md). ## Community The project is developed in the open. Here are some of the channels we use to communicate and contribute: [**Kubernetes Slack**](https://slack.k8s.io/): [#prometheus-operator](https://kubernetes.slack.com/archives/CFFDS2Z7F) - General discussions channel [**Kubernetes Slack**](https://slack.k8s.io/): [#prometheus-operator-dev](https://kubernetes.slack.com/archives/C01B03QCSMN) - Channel used for project developers discussions **Discussion forum**: [GitHub discussions](https://github.com/prometheus-operator/kube-prometheus/discussions) **Twitter**: [@PromOperator](https://twitter.com/PromOperator) **GitHub**: To file bugs and feature requests. For questions and discussions use the GitHub discussions. Generally, the other community channels listed here are best suited to get support or discuss overarching topics. Please avoid emailing maintainers directly. We host publicy bi-weekly meetings focused on project development and contributions. It’s meant for developers and maintainers to meet and get unblocked, pair review, and discuss development aspects of this project and related projects (e.g kubernetes-mixin). The document linked below contains all the details, including how to register. **Office Hours**: [Prometheus Operator & Kube-prometheus Contributor Office Hours](https://docs.google.com/document/d/1-fjJmzrwRpKmSPHtXN5u6VZnn39M28KqyQGBEJsqUOk) ## Getting Started - Fork the repository on GitHub - Read the [README](README.md) for build and test instructions - Play with the project, submit bug fixes, submit patches! ## Contribution Flow This is a rough outline of what a contributor's workflow looks like: - Create a topic branch from where you want to base your work (usually `main`). - Make commits of logical units. - Make sure your commit messages are in the proper format (see below). - Push your changes to a topic branch in your fork of the repository. - Make sure the tests pass, and add any new tests as appropriate. - Submit a pull request to the original repository. Thanks for your contributions! ### Generated Files All `.yaml` files in the `/manifests` folder are generated via [Jsonnet](https://jsonnet.org/). Contributing changes will most likely include the following process: 1. Make your changes in the respective `*.jsonnet` or `*.libsonnet` file. 2. Commit your changes (This is currently necessary due to our vendoring process. This is likely to change in the future). 3. Generate dependent `*.yaml` files: `make generate` 4. Commit the generated changes. ### Format of the Commit Message We follow a rough convention for commit messages that is designed to answer two questions: what changed and why. The subject line should feature the what and the body of the commit should describe the why. ``` scripts: add the test-cluster command this uses tmux to setup a test cluster that you can easily kill and start for debugging. Fixes #38 ``` The format can be described more formally as follows: ``` :